“移花接木式”WORDPRESS主题修改手记:WP_Query实现调用30天内热门文章

华哥有一个网站:菜鸟学苑。使用的是知更鸟主题,花钱买的正版哈。发现这个主题后台,开发有一个很好的功能:就是通过小工具,设置侧边栏热门文章时,可以自定义一个时间段,如30天。

wordpress后台小工具

(如图示,左为前端侧栏效果样式,右为后台功能设置)

没有对比,就没有伤害,我还有一个网站,使用主题巴巴主题,这也是很优秀的主题,也是花钱买的,要不也不会用它。但是此网站内容有一个特点,那就是具有一定的时效性,如下图所示:

网站内容时效过期

这些是全站阅读量最高的文章,但有些过时了!如果老是展示一些过时的信息(对用户而言没有帮助,占据地方不挪窝),似乎并不利于提高网站的点击或增强停留时间等。这就引发一个功能改进需求:有没有办法,只展示本月(30天内)的热门文章呢?

这个实现原理很好理解,就是通过SQL查询,给出一个时间差,可是答案并不好找,主要是用途不一样,多数是用于文章模板中的,一开始我希望能以添加小工具的方式,通过后台来设置,找了一些功能代码,但实践并没有成功,就不贴出来了。

没有更直接的解决办法,我只有去看主题代码。

发现代码中是这样写的:

9875

是不是和have_posts()有关,查了下,没关系,这个函数表示已经获取到数据。

那就往前,WP_Query($args),咦!这个$args是什么?当然,学过编程的人都知道,args是参数的意思。

参数在哪里?再往前,在上面,一共有五个。

我先查找WP_Query的说明文档,看到某篇博文中有提到时间参数,我再搜索和时间参数相关的内容,最终找到一篇,并派上用场。

见:https://www.csweigou.com/article/1731.html

见划线部分,要点如下:

WP_Query

  • before,获取是当前的时间;
  • after,则表示相隔30天,其中30这个数字,可以更换为想要的时间周期,如7天,90天之类;
  • 然后将此加入查询条件,也即args参数之一。

本质是构造SQL查询语句,前提是数组要学好。~华哥就是没学好,见到多维数组就犯晕~

这些代码,华哥看了能够理解,因为过去也曾学习过编程,可是你要让我现在从零开始写,可写不出来。毕竟华哥是做数字营销的,而且还是总监,运营网站是业余而已,且公司不是互联网公司,身边没有懂WEB开发技术的人员可以帮助——一切只能求助于网络。

经过一番代码修改,成功实现侧边栏展示30天内阅读量最高的文章。

wordpress本月浏览最多

代码如下:

//时间约束
$date_query=array(
array(
'column' => 'post_date',
'before' => date('Y-m-d H:i',time()),
'after' =>date('Y-m-d H:i',time()-3600*24*30)
)
);

// Posts query arguments.
$args = array(
'post_type' => 'post',
'posts_per_page' => $instance['limit'],
'date_query' => $date_query,
'orderby' => 'meta_value_num',
'meta_key' => 'post_views_count',
'post__not_in' => get_option( 'sticky_posts' )
);

// The post query
$views = new WP_Query( $args );

有看出哪些地方,是新增加的代码么?~

虽是移花接木小技巧,然此文经过实践,确定有效。同样转载于菜鸟学苑,以备用。见:https://www.cainiaoxueyuan.com/cms/24942.html

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注