我的所有帖子都有一个名为date-start-custom
. 自定义字段的值采用日期格式YYYY-MM-DD HH:MM
(例如:2021 06月15日14:30),我只想列出日期晚于当前日期的帖子。
我已经在修改查询,将帖子从最早排序到最晚排序,我希望可以在同一个查询中这样做。
这就是我的代码当前的样子:
add_action( \'pre_get_posts\', \'filter_posts\' );
function filter_posts( $query ) {
if( is_category() && !is_admin() && $query->is_main_query() ) {
$query->set( \'posts_per_page\',\'10\' );
$query->set( \'orderby\',\'meta_value_num\' );
$query->set( \'meta_key\',\'date-start-custom\' );
$query->set( \'order\',\'ASC\' );
}
return $query;
}
我早些时候在谷歌上搜索了一下,发现
this question 我有一个答案,但这对我来说并不管用。这是我尝试的代码,但不起作用:
add_action( \'pre_get_posts\', \'filter_posts\' );
function filter_posts( $query ) {
$now = date("Y-m-d H:i");
if( is_category() && !is_admin() && $query->is_main_query() ) {
$query->set( \'posts_per_page\',\'10\' );
$query->set( \'orderby\',\'meta_value_num\' );
$query->set( \'meta_key\',\'date-start-custom\' );
$query->set( \'meta_value\', $now );
$query->set( \'meta_type\',\'DATE\' );
$query->set( \'meta_compare\',\'>=\' );
$query->set( \'order\',\'ASC\' );
}
return $query;
}
最合适的回答,由SO网友:rikart 整理而成
结果是meta_query
就是要走的路。这是我用来让它工作的代码。
add_action( \'pre_get_posts\', \'filter_posts\' );
function filter_posts( $query ) {
$now = date("Y-m-d H:i", strtotime(\'+2 hours\'));
if( is_category() && !is_admin() && $query->is_main_query() ) {
$query->set( \'posts_per_page\',\'10\' );
$query->set( \'orderby\',\'meta_value_num\' );
$query->set( \'meta_key\',\'date-start-custom\' );
$query->set( \'meta_query\', array(
array(
\'key\' => \'date-start-custom\',
\'compare\' => \'>=\',
\'value\' => $now,
\'type\' => \'DATE\'
)
));
$query->set( \'order\',\'ASC\' );
}
return $query;
}