WordPress在边栏中显示最热文章,这个功能大多数主题应该都集成好了,当然我的主题是没有集成的,但是主题作者的网站是有的!!!然后我就找了一些自己来操作,让网站支持在文本小工具中显示最热文章,方便读者阅读,也可以通过用wp-postviews插件来实现显示指定天数的最热文章,我这里使用代码来实现
文本小工具是WordPress后台小工具中一个非常实用的边栏工具,可以添加一些自定义的栏目,但原生的小工具是不能运行PHP代码的,我们是通过在后台小工具中给边栏添加文本小工具实现的,所以首先需要让你的文本小工具支持PHP代码运行
将下面的代码添加到你主题的functions.php文件中:
add_filter('widget_text', 'php_text', 99);
function php_text($text) {
if (strpos($text, '<' . '?') !== false) {
ob_start();
eval('?' . '>' . $text);
$text = ob_get_contents();
ob_end_clean();
}
return $text;
}
所谓的最热文章就是指某段时间内评论最多的文章,也就是关注最多的文章
同样把下面这些代码添加到你主题的functions.php文件中
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;
}
使用$wpdb对象来创建一个自定义的SQL查询,创建3个PHP变量:第一个是今天的日期,第二个是今天到X天之前的天数,这个我们作为形参,最后一个是今天的日期减去X天
然后进行调用,在后台小工具中给你的边栏添加文本小工具,命名为最热文章,把下面的代码复制进去,就OK了
<ul>
<?php if(function_exists('most_comm_posts')) most_comm_posts(30, 7); ?>
</ul>
函数的参数1是按天计算的,30就是30天,参数2是文章显示数量,7就是显示7篇,自己根据所需设置
博客很赞,内容也很棒
用get_posts()比SQL语句要好。get_posts有可能去缓存取,而SQL语句就一定要进行数据库查询了。
这一看好像我的主题也没有这个功能吧
藏在菊花里面的侧边栏,哇勒个去~
沈大佬你都没有侧边栏啊,说个锤子 😆
@闲鱼 哼 谁说边栏就一定在侧面 也可以在底部 移动端隐藏了
侧边栏显示最热或热评文章等小工具,感觉都是WordPress主题的标配了
@boke112导航 哈哈 我的主题没有
学习学习
我要占地方 沙发沙发 😆
@清楼小筑 沙发给你
可以可以主要是用插件也可以参与
@微网 都一样的操作