首页 » 开源/框架 » WordPress » 正文

WordPress获取最近某段时间内评论最多的热点文章

刚开始做这个主题的时候,用的是Wordpress自带的函数 get_posts 来获取热门文章的,然而这个函数按评论排序是所有文章中评论最多的文章,这样就有可能导致“热点文章”的列表基本不会更新,这显然不是我们想要的。

今天想给自己的9IPHP主题添加这个功能的时候,百度找到一种方法,是获取最近某段时间内评论最多的文章的。方法是zwwooooo的《WordPress: 某段时间内最热文章》,下面上代码:

/* 某段时间内最热文章*/
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;
}

调用方法:在sidebar.php中添加如下代码

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

样式表什么的就自己写吧,效果请查看本站侧边栏“热点文章”。

本文共 7 个回复

  • 糯米汇 2014/06/10 11:13

    博主是技术控啊!

    • Specs 2014/06/10 11:29

      @ 糯米汇 这个都是我在做这个主题的时候,从别人主题里找到的代码~~~记个笔记,o(∩_∩)o 哈哈

  • 文字控吧 2014/07/30 14:31

    主题右边,热点文章/最新文章/随机文章。 可否请教下贵站是怎么实现的呢??

    • Specs 2014/07/30 14:38

      @ 文字控吧 tab标签,热点文章的获得办法就是这篇文章写的,最新和随机文章用 get_posts 来获取

发表评论