如何将两个排序参数混合到一个排序结果中

时间:2018-10-10 作者:Kris

我想知道如何使用两个不同的orderby参数获得按字母顺序排列的帖子列表。

Im正在过滤存档查询,如下所示:

function change_sort_order_on_archive() {
  if ( is_archive() AND $query->is_main_query() ) {
    $query->set( \'meta_key\', \'my_extra_title_field\' );
    $query->set( \'orderby\', \'meta_value title\' );
    $query->set( \'order\', \'ASC\' );
  }
add_action( \'pre_get_posts\', \'change_sort_order_on_archive\');
但结果显示,帖子首先按meta\\u字段(A-Z)排序,然后显示其余帖子(没有meta字段的帖子)按标题(A-Z)排序。即两组不同排序的帖子。

我想要的是一组单独排序的帖子(A-Z),如果存在,则使用meta字段,否则使用title字段将其排序。

在将查询打印到实际页面之前,是否可能或必须对其重新排序?

1 个回复
SO网友:Rachid Chihabi

尝试使用以下语法:

$query->set(\'orderby\', array(\'title\' => \'ASC\', \'meta_value\' => \'ASC\'));
// $query->set(\'order\', \'ASC\' ); // not needed any more

结束

相关推荐

Sorting Posts by custom field

我正在尝试按自定义字段对帖子进行排序artwork_title. 当我使用下面的代码时,我只会得到一个特定类别的帖子,无论我在哪个类别的存档中。此外,分页显示正确的页数,但转到下一页时始终显示相同的帖子集。有人知道我做错了什么吗?<?php $query = new WP_Query( array( \'posts_per_page\' => 20, \'orderby\' => \'meta_value\',