我有一个名为 type 的自定义字段,这是一个"单选按钮"数据类型,它有一些选择。此自定义字段已分配给名为 pproduct 的自定义帖子类型。
例如,以下是此自定义字段的选项:
只能从上面选择一个。
以下$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
之类的东西答案 0 :(得分:0)
更新:
我很想念你的需求。如果我现在得到它,你想在设置中分配它,就像你写
一样使用WP查询算法无法实现,您必须编写自己的数据库查询才能实现此目的,因为查询必须知道您设置的订单规则(它确实知道alpabetical,数字,日期顺序等。这可以简单地从字段派生出来)。
但是,如果您可以将值ACF更改为数字(就像您在评论链接中发布的那样),那么您必须创建翻译数组(将数字转换为颜色名称),如果您需要使用值作为颜色名称/塞。 所以在ACF设置中选择:
查询参数将保持相同(除了类型排序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