经常看到有人的博客上面有热门日志,由于WordPress自身并没有文章查看次数的统计,所以热门日志基本就是评论最多的,而不是查看次数最多的。
很多的热门日志都是统计整个博客评论最多的文章,我觉得这一点不怎么好,可能很长很长一段时间这个统计都没什么变化,那么我们就希望加个时间段,比如一个月,或者一个星期。
这样的话就是一个比较自由的调用了,WordPress有一点很好,就是资源多,想什么基本都有,虽然不是完全符合自己的想法,但是带来的启示是无穷,一个简单的例子可以引申很多很多实用的例子。
有朋友希望我分享下我侧边栏的热评日志,我就简单的说下我用的。代码来着互联网,然后我稍稍做了点修改。
将下面的代码的复制到主题的function.php文件中。
// 获得热评文章 function simple_get_most_viewed($posts_num=10, $days=30){ global $wpdb; $sql = "SELECT ID , post_title , comment_count FROM $wpdb->posts WHERE post_type = 'post' AND TO_DAYS(now()) - TO_DAYS(post_date) < $days ORDER BY comment_count DESC LIMIT 0 , $posts_num "; $posts = $wpdb->get_results($sql); $output = ""; foreach ($posts as $post){ $output .= "\n<li><a href= \"".get_permalink($post->ID)."\" rel=\"bookmark\" title=\"".$post->post_title." (".$post->comment_count."条评论)\" >". mb_strimwidth($post->post_title,0,32)."</a></li>"; } echo $output; }
在主题中调用热评日志就把
<?php simple_get_most_viewed(); ?>
放到你想放的地方。
由于我是以TAB形式来显示3个日志的,所以为了保持3个样式一致,就得控制标题的长度,然后我把显示评论的条数加到了title里面,鼠标放上去的时候就能看到评论的条数。原来的版本是这样的。
// 获得热评文章 function simple_get_most_viewed($posts_num=10, $days=30){ global $wpdb; $sql = "SELECT `ID` , `post_title` , `comment_count` FROM $wpdb->posts WHERE `post_type` = 'post' AND TO_DAYS( now( ) ) - TO_DAYS( `post_date` ) < $days ORDER BY `comment_count` DESC LIMIT 0 , $posts_num "; $posts = $wpdb->get_results($sql); $output = ""; foreach ($posts as $post){ $output .= "\n<li><a href= \"".get_permalink($post->ID)."\" rel=\"bookmark\" title=\"".$post->post_title."\" >".$post->post_title."</a> - ".$post->comment_count."个评论</li>"; } echo $output; }
我使用了mb_strimwidth函数来做了一个字数的切断。mb_strimwidth函数,是一个比较不错的PHP函数,获取与指定的宽度截断字符串。举个例子:
<?php echo mb_strimwidth(get_the_title(), 0, 32,"...") ?> // get_the_title() 获取文章标题 // 参数32,标题为32字节,中文的话就是16个字 // 超过32个字节的标题,以"..."
上面我使用的代码中为了保持样式一致,我没有加”…”。
10就是显示10条评论,30就是30天,这个要看你发表文章的频率了,发的比较勤快的,就把时间调整短一些,发的不怎么勤快的就调整长一些,比较自由。
mb_strimwidth不依赖WordPress,它是PHP的函数,不过好像不是所有的主机都能很好支持这个函数的,那么你还可以用mb_substr和mb_strcut来截取,mb_substr、mb_strcut、mb_strimwidth各有特色。看例子就知道了
mb_substr
<?php echo mb_substr(get_the_title(), 0, 16,"utf-8"); ?> // get_the_title() 获取文章标题 // 参数16,标题为16个汉字,个人感觉中英文混合的长度控制的不是很好 // "utf-8" 同时要对他进行编码定义,不然容易乱码
mb_strcut
<?php echo mb_strcut(get_the_title(), 0, 32,"utf-8"); ?> // get_the_title() 获取文章标题 // 参数32,标题为32字节,同样的,个人感觉中英文混合的长度控制的不是很好 // "utf-8" 同时要对他进行编码定义,不然容易乱码
所以还是mb_strimwidth感觉好一些。大家可以自由发挥了~
本文固定链接: https://www.weisay.com/blog/wordpress-hot-article-invocation.html | 威言威语
谢谢分享,用到我自己博客了
终于在这里找到了
我是新手,所以我是用插件实现的,你这个代码很好,以后有需要就拿来用,谢谢
麻烦给看看,我网站的热评日志一个也没有,不知道怎么回事了,随机和最新日志都正常
你用的应该是之前下载的吧,你现在到上面下载最新的,然后全部替换你原来的,我2月8号刚刚更新过,你出现的这个问题应该就能正常显示了。
我想知道这篇文章中的代码显示效果是怎么做出来的
用的插件 SyntaxHighlighter Evolved
学习!
由一个WP-KIT-CN 插件 已经把侧边栏的一切搞定了。。。什么随机文章啊 热门文章啊 最近文章 最新评论等等 全部搞定。
这个主题很强大,博主的技术也很牛啊。
主题的确强大,我技术就一般了,呵呵
那你应该显示个评论条数啊。
显示的啊,加在title里面了,鼠标放上面,就看见了。
我一般都是用插件实现的,收藏下,以后折腾的时候可以参考下。
哈哈,我一般是不用插件,能代码解决的就用代码
我忘了 我那个是哪来的~
网上来的,哈哈
wp的diy异次元的软件世界搞的很不错
恩啊,他那个站搞很久了,比较棒
赞同啊
不知道和我侧边栏的那个“热评文章”是不是一个原理哦
应该都很类似的
你搞得也太复杂了,休息休息撒。。
学习如逆水行舟,不进则退。哈哈。
菜鸟来学习啦~~
不要谦虚哦~
这个我也在用,感觉还不错,尤其是在手机上用UC看博客,效果挺不错的,现在要解决的一个问题就是 手机上点击查看更多 显示404的问题,手机很多功能都不支持,必须使用绝对的URL!
你还想支持伪静态呢啊,想法不错,以后我去开发这个浏览器好了,哈哈
折腾wp,乐趣无穷。哈哈
那是,生命就在于折腾~
威,网站上的这些图是哪里找来的啊,还是自己做的?很不错啊
网上找了点,自己整了点。
现在威哥很强力啊!
伪装的很强大,哈哈。其实是菜鸟~
威,你TMD就是太谦虚,有时候就要强势点,霸道点!
水平不够,强势不起来。。。。
我发现我的头像怎么变了呀。。。汗汗。。
没有啊,很正常啊。本地化了,开始是调用的本地的,刷新就换成自己的了
哦哦,原来是这样的呀。我以为头像啥变了。对了,是你安装了什么吗?
本地化G头像,新发表的评论先调用的本地默认的头像,刷新就换成自己的了
这个还是蛮有用的,方便访客和自己查看一些文章哦。。
是滴是滴~增加评论
恩恩,那是哦。。我博客也有呢。
我很少往博客上加这样的代码
呵呵,实用的代码还是可以加点的
这个用了 一段时间,今天换了,换为点击率了。
点击率的是不是要跟一些统计点击次数的插件或者代码联系在一起,WP好像自带没有统计点击率的吧?
因为我本身用了wp-postviews这个插件
我想的也是通过这个插件实现的,哈哈
每次看你的百度AD都是性病广告…..哈哈……….
我依然期待PJ4
广告都是给适合的人看的,我每次看到的都是买房~
某人看到的什么看来很需要哦,哈哈哈哈~
我一看代码就头疼,哎呀呀,岚女飞走也。。。
代码是美女,越看越有滋味~
我再来痛苦地学习下。。。
额,怎么感觉是上刀山下火海?
过来看你啦,嘻嘻
欢迎欢迎~
A9自带的热门文章就是按评论来的
换你这个试试
呵呵
热门日志基本都是按评论来的,不过整个博客的热门日志相对而言没有近期的热评日志来的更加自由。
代码行数不多 介要修改文件 升级时麻烦 能不能做成插件啊?mb_strimwidth如果字符串有汉字字母和数字时好像返回结果尾部容易出现乱码
恩,这个乱码的话还是跟代码的编码有关,开始定义好的正常是不会乱码的。
哈哈,沙发。原来威兄也是个夜猫子。
刚入手Wordpress,学习中!
嘿嘿,我就准备睡觉了,大学的时候都是猫很晚的,现在要上班,我已经纠正很多了。
WP我还不是老手,比新手好一点,我也在学习。
老菜鸟路过>_<
握个手。我也是老菜鸟~