这种方法不适用于1月份:
$lastMonthNumber = date( \'n\', current_time( \'timestamp\' ) ) - 1;
因为它会给
1 - 1 = 0
.
下面是另一个建议,使用字符串来支持日期查询的时间:
$query->set( \'date_query\', [
[
\'after\' => \'midnight first day of last month\',
\'inclusive\' => true,
],
[
\'before\' => \'midnight first day of this month\',
\'inclusive\' => false,
]
] );
例如,这应生成:
wp_posts.post_date >= \'2018-05-01 00:00:00\' AND wp_posts.post_date < \'2018-06-01 00:00:00\'
如果当天是2018年6月27日。
请注意pre_get_posts
是一个动作,而不是过滤器。