用wp-postviews显示指定天数的最热文章

我的博客都比较喜欢安装 wp-postviews 插件来显示文章的浏览数和最热文章,但是有一点不怎么满意的就是它所显示的最热文章是包括所有文章,在最热文章排行榜总是那 10 篇文章,看多了我都腻了,所以就想能不能显示指定天数的最热文章?

经过网上搜索,发现还是有挺多代码能够实现最热文章,不过由于我已经安装了 wp-postviews 插件,所以就想着能不能直接修改 wp-postviews 插件里的文件来实现显示指定天数的最热文章?

想到就做,把 wp-postviews 插件的文件全部都下载下来,发现只有 postviews-cache.js、postviews-options.php、uninstall.php 和 wp-postviews.php 四个文件有用,经阅读,发现其实只需要修改 wp-postviews.php 文件即可实现显示指定天数的最热文章。

我的想法一般都是设置好就懒得改来改去的,所以就不想折腾以达到在后台设置天数的功能,我直接在 wp-postviews.php 文件里修改即可,如只显示 90 天内的文章中最热的文章,只需要修改一点点代码即可。

具体步骤如下:
用wp-postviews显示指定天数的最热文章
1、打开 wp-postviews.php 文件,大概在 286 行找到

  1. get_most_viewed($mode = '', $limit = 10, $chars = 0, $display = true)

函数,在

  1. global $wpdb;

下面添加两行代码:

  1. $today = date("Y-m-d H:i:s"); //获取今天日期时间
  2. $daysago = date( "Y-m-d H:i:s", strtotime($today) - (90* 24 * 60 * 60) ); //Today - $days

2、大概在 304 行找到

  1. $most_viewed = $wpdb->get_results("SELECT DISTINCT $wpdb->posts.*, (meta_value+0) AS views FROM $wpdb->posts LEFT JOIN $wpdb->postmeta ON $wpdb->postmeta.post_id = $wpdb->posts.ID WHERE post_date < '".current_time('mysql')."' AND $where AND post_status = 'publish' AND meta_key = 'views' AND post_password = '' ORDER BY views DESC LIMIT $limit");

把里面的

  1. post_date < '".current_time('mysql')."'

修改成

  1. post_date BETWEEN '$daysago' AND '$today'

3、保存 wp-postviews.php 文件,并把该文件上传到主机空间的 wp-postviews 文件夹里覆盖原文件即可实现显示指定 90 天的最热文章。如果想显示 30 天只需把代码中的 90 改为 30 即可。

© 版权声明
THE END
喜欢就支持一下吧