WordPress边栏中文本小工具获取某段时间内最热文章

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏吴柯的运维笔记

使用XtraBackup工具实现数据库备份

一:安装XtraBackup软件包 1)安装依赖包perl-DBD-MySQL perl-Digest-MD5 libev # yum -y install ...

39750
来自专栏林欣哲

MySQL数据库备份和恢复

31920
来自专栏Ceph对象存储方案

绘制Crushmap分布图-Python

原理 使用命令ceph report --format=json > crush.json导出json格式数据文件,之后使用pydot和graphviz实现绘图...

365100
来自专栏日常分享

Oracle常用数据库系统表单以及SQL的整理

  因为最近涉及到了一些数据库的归档,备份等工作,所以一部分的重心放在了数据库上,毕竟之前对数据库的了解也只停留在了一般的建表,查询,最多最多再写一写触发器之类...

17110
来自专栏散尽浮华

Mysql主从同步(1)-主从/主主环境部署梳理

Mysql复制概念说明 Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一...

41350
来自专栏乐沙弥的世界

myloader恢复mysql数据库示例

    mydumper是针对mysql数据库备份的一个轻量级第三方的开源工具,备份方式为逻辑备份。它支持多线程,备份速度远高于原生态的mysqldump以及众...

16520
来自专栏九彩拼盘的叨叨叨

Sublime-evernote:支持用 Markdown 写印象笔记(Evernote)

{ "noteStoreUrl": "", "token": "" } noteStoreUrl和token值为之前打开的页面的上的值。保存...

26220
来自专栏Python

mysql数据备份与恢复

MySQL数据备份与恢复 #1. 物理备份: 直接复制数据库文件,适用于大型数据库环境。但不能恢复到异构系统中如Windows。 #2. 逻辑备份: 备份的是建...

41960
来自专栏前端vue

对数据进行一些基本操作(四)

完整代码 ↓ ↓ ↓ ↓ github地址:https://github.com/jgsrty/jianshu_node 码云地址:https://gite...

17840
来自专栏Ryan Miao

spring boot 部署为jar

前言 一直在ide中敲代码,使用命令行mvn spring-boot:run或者gradlew bootRun来运行spring boot项目。想来放到prod...

44480

扫码关注云+社区

领取腾讯云代金券