我想通过名为“sort\\u date”的元键来订购WP帖子,如果它不存在,应该使用帖子的发布日期来订购帖子。
下面是我当前使用的代码
function pre_get_posts_custom($wp_query) {
if ( !is_admin() && $wp_query->is_main_query() && !is_page() )
{
$meta_key = \'sort_date\';
$wp_query->set( \'post_type\', array( \'post\', \'article\' ) );
$wp_query->set( \'meta_type\', \'DATE\' );
$wp_query->set(\'meta_query\', array(
\'relation\' => \'OR\',
array(
\'key\' => $meta_key,
\'compare\' => \'NOT EXISTS\',
),
array(
\'relation\' => \'OR\',
array(
\'key\' => $meta_key,
\'value\' => \'on\',
),
array(
\'key\' => $meta_key,
\'value\' => \'on\',
\'compare\' => \'!=\',
),
),
));
$wp_query->set( \'orderby\', array( \'meta_value\' => \'DESC\', \'date\' => \'DESC\' ) );
}
}
add_filter(\'pre_get_posts\', \'pre_get_posts_custom\' );
上面的代码首先显示具有“sort\\u date”元键的帖子,然后显示没有元键值的所有帖子。
例如
帖子A:具有元键值2016-9-28
帖子B:没有元密钥。。。发布日期为2017年6月15日
上面的代码使帖子A首先出现,我希望帖子B首先出现,因为它有最近的日期。我希望元键值和发布日期作为一个整体工作,而不是将两者单独排序。