WordPress如何展示特定时间段内发布的文章。这仅仅是一个基础查询问题,是一定可以实现的。大家可能第一想到的就是query_posts这个方法,但网上写这个方法的参考大多是一些基础查询,而针对这种较为“冷门”的并没有太多回答。其实使用WP_Query类我们轻松就能查询到。
日期相关参数
和文章日期有关的查询,有 9 个参数:
year(整数):4 位数的年份,比如 2014
monthnum(整数):月份,从 1 到 12
w(整数):周,从 0 到 53
day(整数):日,从 1 到 31
hour(整数):小时,从 0 到 23
minute(整数):分钟,从 0 到 60
second(整数):秒,从 0 到 60
m(整数):年月,比如 201409
date_query(数组):复杂的日期查询
year(整数):4 位数的年份,比如 2014
month(整数):月份,从 1 到 12
week(整数):周,从 0 到 53
day(整数):日,从 1 到 31
hour(整数):小时,从 0 到 23
minute(整数):分钟,从 0 到 59
second(整数):秒,从 0 到 59
before(字符串 | 数组):开启查询日期,可以是能被 strtotime() 函数解析的日期字符串,还可以使用数组:
year(整数):4 位数的年份,比如 2014,默认为空
month(整数):月份,从 1 到 12,默认是 1
day(整数):日,从 1 到 31,默认是 1
after(字符串 | 数组):结束查询日期,可以是能被 strtotime() 函数解析的日期字符串,还可以使用数组:
year(整数):4 位数的年份,比如 2014,默认为空
month(整数):月份,从 1 到 12,默认是 12
day(整数):日,从 1 到 31,默认是本月最后一天
inclusive(布尔):before 和 after 是否包含所指定本日的文章
compare(字符串):使用什么比较符号(=、!=、>、>=、<、<=、IN、NOT IN、BETWEEN、NOT、BETWEEN) column(字符串):匹配的日期字段,默认是 post_date relation(字符串):条件的逻辑关系,OR(或者)或 AND(和)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
//获取 2012 年 12 月 12 日的文章 $query = new WP_Query( ‘year=2012&monthnum=12&day=12’ ); //或 $args = array( ‘date_query’ => array( array( ‘year’ => 2012, ‘month’ => 12, ‘day’ => 12, ), ), ); $query = new WP_Query( $args ); //获取今天发布的文章 $today = getdate(); $query = new WP_Query( ‘year=’ . $today[‘year’] . ‘&monthnum=’ . $today[‘mon’] . ‘&day=’ . $today[‘mday’] ); //或者 $today = getdate(); $args = array( ‘date_query’ => array( array( ‘year’ => $today[‘year’], ‘month’ => $today[‘mon’], ‘day’ => $today[‘mday’], ), ), ); $query = new WP_Query( $args ); |
获取本周发布的文章
1 2 3 |
$week = date( ‘W’ ); $year = date( ‘Y’ ); $query = new WP_Query( ‘year=’ . $year . ‘&w=’ . $week ); |
或者
1 2 3 4 5 6 7 8 9 |
$args = array( ‘date_query’ => array( array( ‘year’ => date( ‘Y’ ), ‘week’ => date( ‘W’ ), ), ), ); $query = new WP_Query( $args ); |
获取上午 10 点到下午 6 点的文章
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$args = array( ‘date_query’ => array( array( ‘hour’ => 10, ‘compare’ => ‘>=’, ), array( ‘hour’ => 18, ‘compare’ => ‘<=’, ), array( ‘dayofweek’ => array( 2, 6 ), ‘compare’ => ‘BETWEEN’, ), ), ‘posts_per_page’ => –1, ); $query = new WP_Query( $args ); |
获取 2013 年 1 月 1 日到 2013 年 2 月 18 日的文章
包含 2013 年 1 月 1 日和 2013 年 2 月 18 日的文章:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$args = array( ‘date_query’ => array( array( ‘after’ => ‘January 1st, 2013’, ‘before’ => array( ‘year’ => 2013, ‘month’ => 2, ‘day’ => 28, ), ‘inclusive’ => true, ), ), ‘posts_per_page’ => –1, ); $query = new WP_Query( $args ); |
不包含 2013 年 1 月 1 日和 2013 年 2 月 18 日的文章:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$args = array( ‘date_query’ => array( array( ‘after’ => ‘January 1st, 2013’, ‘before’ => array( ‘year’ => 2013, ‘month’ => 2, ‘day’ => 28, ), ‘inclusive’ => false, ), ), ‘posts_per_page’ => –1, ); $query = new WP_Query( $args ); |
获取在一年前发布却在一个月前修改过的文章
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$args = array( ‘date_query’ => array( array( ‘column’ => ‘post_date_gmt’, ‘before’ => ‘1 year ago’, ), array( ‘column’ => ‘post_modified_gmt’, ‘after’ => ‘1 month ago’, ), ), ‘posts_per_page’ => –1, ); $query = new WP_Query( $args ); |
1.本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:115904045@qq.com,我们将第一时间处理!
2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持
3.所有资源仅限于参考和学习,版权归原作者所有,更多请阅读网站声明。