WordPress query_posts方法:按指定时间调用文章(如最近一周、一月、一年)

2022-07-0909:54:43网站建设与开发Comments1,126 views字数 1432阅读模式

拿最多浏览量文章排序来讲,越是热门的文章越会坚挺在最前面。换而言之,在你推荐的位置,很可能永远都是那几篇文章,比如5年后还是现在的某篇文章排在里面;而我们之所以弄一个排序就是供用户参考的,如果时间太长这个参考几乎没有意义。那么我们能不能在加一个约束条件呢?比如一周热门、一月热门、本年度热门等等。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

当然,这仅仅是一个基础查询问题,是一定可以实现的。但是我们尽量能使用其自带方法来完成操作,大家可能第一想到的就是query_posts这个方法,但网上写这个方法的参考大多是一些基础查询,而针对这种较为“冷门”的并没有太多关注。这我们可以参考官网文档或者直接参考方法源代码。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

实际上,在query.php中,也就是query_posts对应的文件,其实就是一个WP_Query类,在里面有一个$date_query,而它是WP_Date_Query的一个实例。实际上WP_Date_Query类在官网文档中就有,文档地址:https://developer.wordpress.org/reference/classes/wp_date_query/。相关调用规则如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

$date_query = new WP_Date_Query( array(文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

'column' => '可选,日期查询针对的数据列,默认为 post_date',文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

'compare' => '可选,一些比较运算的符号,在 WP_Date_Query::get_compare()中 有定义(如 '=', '!=', '>', '>=', '<', '<=', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN')',文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

'relation' => '可选,OR 或者 AND,当下面紧接着设定的日期数组超过 2 组时,通过这个参数来决定其组合关系,默认为 AND',文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

array(文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

'column' => '要求同上',文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

'compare' => '要求同上',文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

'after' => '字符串或数组,参考 WP_Date_Query::build_mysql_datetime()',文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

'before' => '字符串或数组,参考 WP_Date_Query::build_mysql_datetime()',文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

'inclusive' => '布尔值,针对上面的 after/before,是否要精确匹配给定日期',文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

'year' => '4 位整数',文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

'month' => '整数,1-12',文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

'week' => '整数,0-53',文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

'day' => '整数,1-31',文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

'hour' => '整数,0-23',文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

'minute' => '整数,0-60',文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

'second' => '整数,0-60',文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

),文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

array(文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

...文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

),文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

...文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

) );文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

然后可以在WP_Query或者query_posts中调用,如调用一个月内最多阅读量的十篇文章。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html

//时间约束

$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)
)
);
//查询条件
$args=array(
'meta_key' => 'views',
'orderby' => 'meta_value_num',
'posts_per_page'=>10,
'date_query' => $date_query,
'order' => 'DESC'
);
//查询
 query_posts($args);
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/24942.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/cms/24942.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定