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篇,自己根据所需设置。

完。

声明: 除非注明,ZWWoOoOo文章均为原创,转载请以链接形式标明本文地址
本文地址: http://zww.me/archives/25453

100 comments

  1. 阅微博客 阅微博客 Google Chrome 11.0.696.65 Windows 7

    抢个沙发。

    沙发
  2. 自说Me话 自说Me话 Google Chrome 11.0.696.57 GNU/Linux

    拿走啦.哈哈.介个好 :mrgreen:

    板凳
  3. axiu axiu Google Chrome 11.0.696.68 Windows 7

    我最热文章用的是浏览最多,直接在willin的my_visitors里加了个

    post_date > date_sub( NOW(), INTERVAL 2 MONTH )

    了事……

    地板
  4. ......
  5. 观影楼阁 观影楼阁 Google Chrome 10.0.648.205 Windows 7

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

    31楼
  6. 电商圈商城 电商圈商城 Google Chrome 11.0.696.60 Windows XP

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

    32楼
  7. 电商圈商城 电商圈商城 Google Chrome 11.0.696.60 Windows XP

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

    33楼
  8. 某段时间内的文章数 | 无冷博客 - pingback on 2011/07/06/ 20:10
    34楼
  9. jamie jamie Google Chrome 12.0.742.122 Windows 7

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

    35楼
  10. kmummy kmummy Google Chrome 16.0.912.4 Windows 7

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

    36楼
  11. 浪漫在于中 浪漫在于中 Internet Explorer 8.0 Windows XP

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

    37楼
  12. SEV SEV Firefox 8.0 Windows 7

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

    38楼
  13. SEV SEV Firefox 8.0 Windows 7

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

    39楼
  14. SEV SEV Firefox 8.0 Windows 7

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

    40楼
    • zwwooooo zwwooooo Firefox 8.0 Windows 7 x64 Edition

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

  15. SEV SEV Firefox 8.0 Windows 7

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

    41楼
    • zwwooooo zwwooooo Pale Moon 8.0 Windows 7 x64 Edition

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

  16. SEV SEV Firefox 8.0 Windows 7

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

    42楼
  17. SEV SEV Google Chrome 16.0.912.63 Windows 7

    一般写代码多少额,您大概什么时候有空呢? :cry:

    43楼
    • zwwooooo zwwooooo Pale Moon 8.0 Windows 7 x64 Edition

      @SEV
      先把你要的功能详细说一下发到我的邮箱(侧边栏about有)

    • SEV SEV Google Chrome 16.0.912.63 Windows 7

      @zwwooooo
      哦,明天我写给你,你也先休息嘛,今天很晚了...

  18. 44楼
  19. xuanxuan0505 xuanxuan0505 Firefox 9.0.1 Windows 7

    :cry:
    hey。。我想问。。怎么在一个新的page里面把这个Popular的展现出来啊?下面一个调用的coding,应该放在哪里啊?

    45楼
    • zwwooooo zwwooooo Firefox 12.0 Windows 7 x64 Edition

      @xuanxuan0505
      copy 一个 page.php 然后改名(例如page-popular.php),然后把代码扔到 page-popular.php 合适的位置(如the_content()函数后面),再然后建立一个页面,名为popular即可。

    • zhx zhx Firefox 12.0 Windows 7

      @zwwooooo 嗯~那你知道,怎么把这种链接形式的转换成一个个的博客文章的summary的那种形式啊?就是,包括文章第一段,时间,标题,作者等等那种。。 :?:

    • zwwooooo zwwooooo Firefox 12.0 Windows 7 x64 Edition

      @zhx
      可以输出一定数量的文字作为摘录,配合php摘录函数对去掉html格式的post->content进行截取。

  20. emric emric Google Chrome 20.0.1132.57 Windows Server 2003

    query_posts()只显示一年内应该怎么写呢?

    46楼
  21. javio javio Firefox 16.0 Windows 7

    您的文章是如此有趣和翔实。我得到了很多有用的和重要的信息。谢谢你这么多。

    47楼
  22. 小小小子 小小小子 Google Chrome 21.0.1180.89 Windows XP

    小白求助:边栏那里具体怎么调用啊。。。?代码怎么加进去?求求求

    48楼
  23. satiling satiling Google Chrome 21.0.1180.92 Windows 7

    请问楼主,如果我想把分类目录搞一个24小时最热的帖子,
    用你这个方法,其他都实现了,但是帖子所对应的分类还是无法显示,类似这样的 www。juyouqu。com/hot/day

    49楼
  24. 自然志 自然志 Firefox 22.0 Windows 7 x64 Edition

    如果要显示最热门文章的发表时间该如何做?我试了the_time函数,不行。

    50楼
    • zwwooooo zwwooooo Firefox 22.0 Windows 8 x64 Edition

      @自然志
      the_time 是直接输出,这里面的代码你要用 get_the_time,而且最好加上参数,如:get_the_time('m-d-Y', $postid)

  25. qing qing Google Chrome 21.0.1180.89 Windows XP

    这标题如何让调用出来的标题显示指定的字数

    51楼
  26. 烂番茄 烂番茄 Google Chrome 28.0.1500.95 Windows 7

    过来学习下了!

    52楼
  27. 郑永 郑永 Google Chrome 37.0.2062.103 Windows XP

    这么久了,今天还是找到这里来,代码很亲切,还加了判断function是否有代码存在,这样做可以友好的显示完整主题遇到问题的时候,呵呵。

    53楼

Leave a Reply