WordPress获取指定时间的文章

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 );
本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!网站资源来自用户分享,如有侵权行为请联系网站客服处理。
二月繁华 » WordPress获取指定时间的文章

发表评论

分享最优质的资源集合

了解详情