让代码更简单

WordPress查询指定时间范围内最热门、评论最多文章

重要:本文最后更新于2019-01-06 09:32:17,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

WordPress查询指定时间范围内最热门、评论最多文章仅仅靠WordPress提供的函数是不行的,我们需要按照自己的需求条件执行数据库查询才能获得对应数据,比如本站首页的热门讨论模块,就是采用了数据库查询的方式取得的文章数据。

这两天趁放假,将代码狗博客的主题功能优化了下,新增了一些功能,显示效果做了一些细节上的调节。大家可能发现了,我在首页新增了一个热门讨论模块。这个模块里显示的是一个月时间内的评论次数最多的文章,总共显示5篇,并按照评论数量从高到底排列。下面来看看具体怎么实现的,部分代码来自网友。

WordPress查询指定时间范围内最热门、评论最多文章

WordPress查询指定时间范围内最热门、评论最多文章

实现代码

将以下代码复制到你的主题目录下functions.php文件中。

复制
/* 某段时间内评论最多最热文章*/
function most_comm_posts($days=7, $nums=5) { //$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>尴尬了,没有热门文章!</li>';
	} else {
		$i=0;
		foreach ($result as $topten) {
			$i++;
			$postid = $topten->ID;
			$title = $topten->post_title;
			$commentcount = $topten->comment_count;
			if ($commentcount != 0) {
				$output .= '<li><a>'.$title.'</a> ('.$commentcount.')</li>';
			}
		}
	}
	return $output;
}

然后在你需要调用的主题模板文件中使用

复制
<?php echo most_comm_posts(7,5);?>

核心部分在于那一串数据库查询,按照限制条件从posts表中取得我们需要的数据,再从数据中取出comment_count, ID, post_title, post_date字段内容,如果你需要对应文章的链接地址,可以使用get_permalink($postid)函数获取,返回结果中的ID字段就是文章id。

上面的方法最后输出的html内容即<li>标签内的数据,可以根据自己需求书写,这里只是举个例子。

感觉很棒!可以赞赏支持我哟~

0 打赏

评论 (0)

登录后评论
QQ咨询 邮件咨询 狗哥推荐