WordPress: 某段时间内最热文章

这个功能算是老需求了,因为自己不怎么需要,所以也没写过。最近一个朋友需要此功能,而且不要网上搜到的直接方式,而是要写成函数。我记得收藏过一段类似的代码,是国外一个 WPer 写的,至于是不是原创就不知道了,但代码里面我是注明是基于他那篇文章里面的代码修改的。

“某段时间内最热文章”,就是指自定义一段时间内的文章中评论最多的文章,以前很多人用的是全部文章的最热文章功能,用处不大。

某段时间内的最热文章也很多人写过吧,具体就记不清了,我这里也贴一下自己修改的。

1. 把下面的函数代码扔到主题的 functions.php 文件里面,具体看注释

/* 某段时间内最热文章
 * Reference: http://www.wprecipes.com/rarst-asked-how-to-get-most-commented-posts-of-the-week
 * Edit: zwwooooo
 */
function most_comm_posts($days=7, $nums=10) { //$days参数限制时间值,单位为‘天’,默认是7天;$nums是要显示文章数量
	global $wpdb;
	$today = date("Y-m-d H:i:s"); //获取今天日期时间
	$daysago = date( "Y-m-d H:i:s", strtotime($today) - ($days * 24 * 60 * 60) );  //Today - $days
	$result = $wpdb->get_results("SELECT comment_count, ID, post_title, post_date FROM $wpdb->posts WHERE post_date BETWEEN '$daysago' AND '$today' ORDER BY comment_count DESC LIMIT 0 , $nums");
	$output = '';
	if(empty($result)) {
		$output = '<li>None data.</li>';
	} else {
		foreach ($result as $topten) {
			$postid = $topten->ID;
			$title = $topten->post_title;
			$commentcount = $topten->comment_count;
			if ($commentcount != 0) {
				$output .= '<li><a href="'.get_permalink($postid).'" title="'.$title.'">'.$title.'</a> ('.$commentcount.')</li>';
			}
		}
	}
	echo $output;
}

2. 调用方法,例如放在侧边栏:

<h3>近期最热文章</h3>
<ul>
   <?php if(function_exists('most_comm_posts')) most_comm_posts(30, 10); ?>
</ul>

PS:函数参数1是按天计算的,30就是30天;参数2是文章显示数量,10就是显示10篇,自己根据所需设置。

完。

zww
or
oooo

“WordPress: 某段时间内最热文章”有100条评论

  1. 邓肯 says:

    某段时间的热文 比 总的热文 有用多了 后者没啥大用处

    1. zwwooooo says:

      @邓肯
      对啊,后者的确木有用处

  2. liveme says:

    排除页面的吗?有些版本是将页面也算在内的。

    1. zwwooooo says:

      @liveme
      规定一段时间的不需要排除页面,因为页面通常很少增加,所以被时间淘汰很快

  3. ZhangJun says:

    这个比全站的热门文章实用

  4. A.shun says:

    某段时间的比较有用,收藏~

    1. zwwooooo says:

      @A.shun
      代码更新了,原来的有问题。

  5. 以前也见过类似功能的代码,不过是从一个国内博客看到的,回头把那个代码找到了看看。

    1. zwwooooo says:

      @闲云野鹤
      这类都类似,wp木有内置函数只好用sql了

    2. Cheney says:

      @zwwooooo
      这句经典,木有内置函数...弄得我写主题都是自己写函数 :arrow:

    3. zwwooooo says:

      @Cheney
      sql不熟,简单应用

  6. Louis Han says:

    还是我们的WP功能够强大啊

    1. zwwooooo says:

      @Louis Han
      这个当然。

  7. smilebull says:

    哈哈,这个好,已用上

    1. zwwooooo says:

      @smilebull
      我也加了,霍霍

  8. 我以前也修改过,这个文章很有用的啊。

  9. likebeta says:

    是否应该加上post_status='publish'?

  10. 博主呀,可否弄个本周点击数的热门文章呢

    1. zwwooooo says:

      @观影楼阁
      本周?你设为7天就行了。

  11. 对了,想请问ZWW,我的博客现在就是评论最多的文章一直不更新,不知道是怎么回事?能否给解答下?
    先谢谢了。

    1. zwwooooo says:

      @电商圈商城
      你这样问我怎么回答你呢?我又不知道你用的神马代码。

  12. 回复代码好像显示不全, :sad:

    1. zwwooooo says:

      @电商圈商城
      代码要用code标签括住。也不需要贴代码,请直接用我文章的代码。

  13. jamie says:

    这个功能不错哦!很喜欢你的主题翻滚效果....可惜俺是个小白,不会弄- -.

    1. zwwooooo says:

      @jamie
      霍霍,学点jQuery就能做了

  14. kmummy says:

    如是果时某段时间内的 浏览最多的文章的话, 代码怎么写?

    1. zwwooooo says:

      @kmummy
      要跟插件配合,因为wp木有浏览量记录功能

  15. 浪漫在于中 says:

    我想实现你的右边栏 评 新 热 签换成 周 月 总 热文怎么实现啊,能否给代码啊?

    1. zwwooooo says:

      @浪漫在于中
      那是jQuery的tab切换,我没写教程,网上一大堆,自己搜搜

  16. SEV says:

    问一下,怎么带上文章第一张图片缩略图在前面呢? :mrgreen:

    1. zwwooooo says:

      @SEV
      写函数

  17. SEV says:

    如果标题过长,怎么截图的呢?谢谢,问题有点多 :idea:

  18. SEV says:

    真的很不错,这样的效果呢?获取第一张图片,以及标题截断,下面还有最后一个评论者的评论内容+ID
    最右边就是评论数 :arrow: 谢谢

    1. zwwooooo says:

      @SEV
      标题截断?用php字符串截断函数把 get_the_title() 的截断就行了,具体查手册。

  19. SEV says:

    ZWWWOOOOO能不能帮我定制一下呢!谢过额,我现在自学PHP还木办法搞定... :smile:

    1. zwwooooo says:

      @SEV
      定制要详细说明,然后定制是收费的,因为我不是闲着。

  20. SEV says:

    ZWWWOOOOO大哥再次谢谢额... :oops:

发表评论

昵称 *

网址

B em del U Link Code Quote