如何解决这个问题在很大程度上取决于您如何存储它。
一般来说,我知道让WordPress处理历史日期,范围广泛,作为发布日期。您可以在本网站或trac上查看各种限制。
Date query for yesterday
如果使用以下对象创建datetime对象:
$dto = DateTime::createFromFormat( \'Y-n-j\', current_time( \'Y-n-j\' ) );
其中,时区包括在
current_time()
, 然后,您可以尝试使用以下方法将其设置为日期之前的日期:
$dto->modify( \'yesterday\' );
昨天的月和日应可通过以下方式访问:
\'date_query\' => [
[
\'month\' => $dto->format(\'n\'),
\'day\' => $dto->format(\'j\'),
],
],
两天之后我们才能尝试
$dto->modify( \'-2 days\' );
等等
Date query for the current date or the previous available date
如果对所有事件使用同一年,则可以使用:
\'date_query\' => [
[
\'before\' => current_time( \'Y-n-j\' ),
\'inclusive\' => true,
],
],
Alternatives
对于一个非常稀疏的月日列表,可以尝试按月和日对帖子进行分组,以找到以前可用的帖子日期。但这需要一个自定义查询。
也可以使用自定义数据库表来存储日期,以获得更大的灵活性,但这也需要自定义构建。
许多事件插件将日期存储在post meta中,并使用meta_query
在里面WP_Query
过滤掉它。但对于大量的帖子来说,这可能无法很好地扩展。
我们甚至可以使用自定义分类法来存储月日,但这样的话,月日排序可能会变得棘手。