根据可能的meta_value的特定顺序对wp_query的结果进行排序

时间:2018-11-30 20:19:45

标签: php mysql wordpress

我正在使用wp_query获取帖子列表,并使用meta_query能够使用orderby对它们进行排序。以下是我使用meta_query首先根据元值是否存在而返回结果的重要部分。

$args['meta_query'] = array (
    'relation' => 'OR',
    array(
        'key' => 'meta_field', 
        'compare' => 'NOT EXISTS'
    ),
    array(
        'key' => 'meta_field', 
        'compare' => 'EXISTS'
    )
);
$args['orderby'] = array(
    'meta_value' => 'ASC', 
    'title' => 'ASC'
);

然后,orderby尝试首先通过meta_value(首先显示空值)进行排序,然后再通过帖子标题进行排序。 meta_field是包含成绩的列,因此meta_value的选项为“杰出”,“良好”,“需要改进”和“不足”。

因此,当前,它将首先返回具有空值的结果,然后其余的将按字母顺序对meta_value进行排序,因此“好”,“不足”,“突出”,需要改进”。这是有道理的,因为它在meta_value中使用了“ ASC”。

但是,我真的需要按照最佳成绩的逻辑顺序进行订购。我当时在想可能有一种以正确顺序排列字符串数组的方法,该方法可以某种方式用于引用meta_value。

如果只能在MySQL中完成此操作,那么将其合并的最佳方法是什么?

0 个答案:

没有答案