你所尝试的是不可能的WP_Query
.
原因是,因为您只存储了持续时间,所以在知道发布日期和持续时间并将其相加之前,无法判断帖子是否已过期。这就是它的作用:
$expire = get_field( \'status_time_duration\' ) + get_the_time( \'U\' );
该代码依赖于您已经拥有该帖子的状态持续时间和时间。什么时候
pre_get_posts
运行时,帖子甚至没有被查询,顾名思义,这意味着您无法执行添加。
可以在原始SQL查询中进行必要的添加和比较,但是WP_Query
不提供执行此类查询的功能。
由于这些原因,如果要以这种方式查询到期时间,那么将到期时间存储为持续时间是一个糟糕的选择。存储帖子过期的绝对日期和时间要容易得多,然后可以使用简单的元查询将该日期与当前日期进行比较:
\'meta_query\', [
\'relation\' => \'OR\',
[
\'key\' => \'status_time_duration\',
\'value\' => date( \'U\' ),
\'compare\' => \'<=\',
\'type\' => \'NUMERIC\',
],
[
\'key\' => \'status_time_duration\',
\'compare\' => \'NOT EXISTS\',
],
],
请注意,上面的代码只是一个示例,说明您是否更改了存储过期时间的方式,并且无法使用当前设置。