是否可以按分配的顺序查询帖子?

Is it possible to query posts in the same order as assigned?

我有一个名为 type 的自定义字段,它是 "radio button" 数据类型并且有一些选择。此自定义字段分配给名为 pproduct 的自定义 post 类型。

例如这里是这个自定义字段的选择:

以上只能选一个

以下$args

 $args = array(
      'post_type' => 'pproduct',
      'posts_per_page' => -1,
      'post_status'=>array('publish'),
      'product' => $category->slug ,
      'meta_query' => array(
          'relation' => 'AND',
          'type_clause' => array(
              'key' => 'type',
          ),
          'order_clause' => array(
              'key' => 'order',
          ),
      ),
      'orderby' => array(
              'type_clause' => 'DESC',
              'order_clause' => 'ASC',
      ),
  );

将查询 post 类型 pproduct 的所有 post,并按两个自定义字段对其进行排序。 类型顺序 。它将按 字母顺序 顺序对其进行排序。

是否可以修改它并按照分配的 类型 相同的顺序对其进行排序?有谁知道如果我不使用 order by 会发生什么?我可以看到它带来了 posts 但如果不是我分配的 "default order" 是什么。

编辑 1:类似于 this

更新:

我误解了你的需求。如果我现在明白了,你想按照你在设置中分配的方式下订单,就像你写的那样

  • 红色
  • 蓝色
  • 黄色
  • 白色
  • 黑色

这无法通过 WP 查询参数实现,您必须编写自己的数据库查询来实现此目的,因为查询必须知道您设置的顺序规则(它确实知道字母、数字、日期顺序等等,可以简单地从字段中导出)。

但是,如果您可以将值 ACF 更改为数字(就像您在评论 link 中 post 编辑的那样)您就赢了,那么您将必须创建转换数组(将数字转换为颜色name) 如果你需要使用值作为颜色 name/slug。 所以在 ACF 设置选项中:

  • 1:红色
  • 2:蓝色
  • 3:黄色
  • 4:白色
  • 5:黑色

查询参数将保持不变(类型排序 DESC->ASC 除外) 如果您需要从数字中获取名称,请在循环中使用它:

$field = get_field_object( 'type' );
$value = $field['value'];
$color_name = $field['choices'][ $value ]; // this will be formated
$unformated_slug = sanitize_title( $color_name ); // change to lowercase and remove whitespaces etc..

// then you can work with $unformated_slug like your original field value eg:
if( $unformated_slug == 'red' ) {
    /* do something here */
}

将选择值改为数字是最简单的方法,其他任何方法都太复杂了。

--

post 的默认顺序是按日期。如果您想为所有查询或仅为自定义 post 类型查询自动设置顺序,请参阅 https://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts