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

时间:2017-02-21 15:41:34

标签: php wordpress advanced-custom-fields

我有一个名为 type 的自定义字段,这是一个"单选按钮"数据类型,它有一些选择。此自定义字段已分配给名为 pproduct 的自定义帖子类型。

例如,以下是此自定义字段的选项:

  • RED
  • BLUE
  • YELLOW
  • WHITE
  • BLACK

只能从上面选择一个。

以下$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',
      ),
  );

将查询帖子类型 pproduct 的所有帖子,并将按两个自定义字段对其进行排序。 输入订单。它会按按字母顺序顺序对其进行排序。

是否可以修改此项并按照分配类型的顺序对其进行排序?有谁知道如果我不使用订单会发生什么?我可以看到它带来的帖子但是"默认顺序"如果它不是由我分配的。

编辑1:this

之类的东西

1 个答案:

答案 0 :(得分:0)

更新:

我很想念你的需求。如果我现在得到它,你想在设置中分配它,就像你写

一样
  • RED
  • BLUE
  • YELLOW
  • WHITE
  • BLACK

使用WP查询算法无法实现,您必须编写自己的数据库查询才能实现此目的,因为查询必须知道您设置的订单规则(它确实知道alpabetical,数字,日期顺序等。这可以简单地从字段派生出来)。

但是,如果您可以将值ACF更改为数字(就像您在评论链接中发布的那样),那么您必须创建翻译数组(将数字转换为颜色名称),如果您需要使用值作为颜色名称/塞。 所以在ACF设置中选择:

  • 1:RED
  • 2:BLUE
  • 3:YELLOW
  • 4:WHITE
  • 5:BLACK

查询参数将保持相同(除了类型排序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 */
}

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

-

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