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. SEV says:

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

    1. zwwooooo says:

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

  2. SEV says:

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

  3. SEV says:

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

    1. zwwooooo says:

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

    2. SEV says:

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

  4. xuanxuan0505 says:

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

    1. zwwooooo says:

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

    2. zhx says:

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

    3. zwwooooo says:

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

  5. emric says:

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

    1. zwwooooo says:

      @emric
      看query_posts函数的参数,去WP Codex

    2. emric says:

      @zwwooooo
      看了好多次了,主要时间函数发现都是指定时间.

    3. zwwooooo says:

      @emric
      那就给一个一年的时间去吗,很简单,自己用计算器算吧。

  6. javio says:

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

  7. 小小小子 says:

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

    1. zwwooooo says:

      @小小小子
      第二步不是写了么。。。

  8. satiling says:

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

    1. zwwooooo says:

      @satiling
      注意写对参数

    2. satiling says:

      @zwwooooo
      请问正常参数是什么呢?我直接调用不行啊

  9. 自然志 says:

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

    1. zwwooooo says:

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

  10. qing says:

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

    1. zwwooooo says:

      @qing
      用字符串截取函数,我这搜搜,写过。

  11. 烂番茄 says:

    过来学习下了!

  12. 郑永 says:

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

    1. zwwooooo says:

      @郑永
      一般自定义函数都要加,只是偶尔偷懒吧

发表评论

昵称 *

网址

B em del U Link Code Quote