我想在同一通话中按2个自定义字段对帖子排序。这怎么可能?
此下一个代码成功排序,但只能通过1个自定义字段:
add_action('pre_get_posts', function ($q) {
if (
!is_admin() // Target only front end queries
&& $q->is_main_query() // Target the main query only
&& ($q->is_search() || $q->is_post_type_archive('data-base'))
) {
$q->set('meta_key', 'custom_field_1');
$q->set('order', 'DESC');
$q->set('orderby', 'meta_value');
}
});
尝试这个:
配置元查询:
$meta_query = array(
'relation' => 'AND',
'clause1' => array(
'key' => 'first key of your meta',
'compare' => 'EXISTS',
),
'clause2' => array(
'key' => 'second key of your meta',
'compare' => 'EXISTS',
));
$q->set('meta_query', $meta_query);
$q->set('orderby',array(
'clause1' => 'DESC',
'clause2' => 'ASC'
)
);
如果要沿相同方向排序:
$q->set('orderby' =>'clause1 clause2',
'order' =>'ASC'
);