我有这样的功能:
//sorting archive query by pinned posts
function archive_sort_pinned($query){
$option = get_option(\'hsa_story_cats\');
$current_category = get_queried_object();
if(!is_admin() && $query->is_main_query() && is_category($option)){
$query->set(\'meta_query\', array(
\'relation\' => \'OR\',
array(
\'key\' => \'story_cat_order_\'. $current_category->term_id,
\'compare\' => \'EXISTS\',
),
array(
\'key\' => \'story_cat_order_\'. $current_category->term_id,
\'compare\' => \'NOT EXISTS\',
\'value\' => \'\'
)
));
$query->set(\'orderby\', array( \'meta_value_num\' => \'ASC\', \'date\' => \'DESC\' ));
$query->set(\'meta_key\',\'story_cat_order_\'. $current_category->term_id);
}
}
add_action(\'pre_get_posts\', \'archive_sort_pinned\');
问题是:这将只返回带有键的帖子story_cat_order_<cat_id>
, 当我删除最后一行时meta key
然后我得到了所有的帖子,但它们没有被订购。我想用这个来点meta_key
如果他们有,或者如果没有,则按日期meta_key
.