您的主要问题是日期格式。虽然另一个答案可以,但它是无效的,并且会导致分页查询中每页的帖子数量不一致。这里的问题是,如果你有100篇文章,而只有10篇文章将来有日期,那么查询额外的90篇文章只是为了在循环中跳过/隐藏它们,这是在浪费大量资源。此外,如果对查询分页,您可能会随机得到包含5篇或两篇帖子的页面,或者根本没有帖子。但我不是来这里批评任何其他帖子的;-)
正如我所说,您的主要问题是日期格式。与date_query
字段,自定义字段按字面顺序排序和比较。这意味着,如果你试图将一个苹果与一个桔子作为水果进行比较,那么在一个自定义字段中,这种比较将失败,因为这是一种预言,而苹果不是同一件事,尽管它们都是水果,但在date_query
比较将通过,因为逻辑是,无论是哪种水果,两者都是水果
time()
返回unix时间戳中的当前时间。您可以通过简单的操作来测试这一点echo time();
模板中的任意位置。在a中date_query
, 有一种逻辑知道这是一个有效的unix时间戳。A.meta_query
认为这是一个没有特殊意义的字面数字。为了进行排序和比较,自定义字段中的日期还必须另存为unix时间戳,才能使用此格式。Any other 格式化将失败。
我认为自定义字段中的日期保存为正常日期,而不是unix时间戳,因此上述内容不适用于time()
. 您需要的是date()
php中的函数或类似函数以所需格式返回当前时间和日期(注意,保存在自定义字段中的日期格式必须为Y-m-d H:i:s
出于比较或排序目的,任何其他格式都不起作用,句号)。
所以,为了解决您的问题,如果您的日期格式是Y-m-d H:i:s
或者只是Y-m-d
, 你only 需要更改以下行
$today = time();
至
$today = date( \'Y-m-d H:i:s\' );
或
$today = date( \'Y-m-d\' );
除此之外,您的代码应该可以工作,并且只在今天之后(包括今天)返回帖子
附言wp_reset_query();
应该是wp_reset_postdata();
;-)