Php 是否可以按指定的顺序查询帖子?
我有一个名为type的自定义字段,这是一个“单选按钮”数据类型,它有一些选择。此自定义字段分配给名为pproduct的自定义帖子类型 例如,以下是此自定义字段的选项:Php 是否可以按指定的顺序查询帖子?,php,wordpress,advanced-custom-fields,Php,Wordpress,Advanced Custom Fields,我有一个名为type的自定义字段,这是一个“单选按钮”数据类型,它有一些选择。此自定义字段分配给名为pproduct的自定义帖子类型 例如,以下是此自定义字段的选项: 红色的 蓝色的 黄色的 白色的 黑色的 只能从以上选项中选择一个 下面的$args: $args = array( 'post_type' => 'pproduct', 'posts_per_page' => -1, 'post_status'=>array('publi
- 红色的
- 蓝色的
- 黄色的
- 白色的
- 黑色的
$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 typep product的所有帖子,并按两个自定义字段对其进行排序类型和顺序。它将按字母顺序对其进行排序
是否可以对其进行修改,并按照指定的类型的相同顺序对其进行排序?有人知道如果我不使用order by会发生什么吗?我可以看到它带来的职位,但什么是“默认顺序”,如果它不是由我指定的
编辑1:类似于更新:
我不理解你的要求。若我现在得到它,你们想按照你们在设置中分配的顺序,就像你们写的一样
- 红色的
- 蓝色的
- 黄色的
- 白色的
- 黑色的
- 1:红色
- 2:蓝色
- 3:黄色
- 4:白色
- 5:黑色
$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 */
}
将选择值更改为数字是最简单的方法,其他任何方法都太复杂
--
默认的发布顺序是按日期。如果要为所有查询自动设置订单,或仅为自定义帖子类型查询设置订单,请参见更新:
我不理解你的要求。若我现在得到它,你们想按照你们在设置中分配的顺序,就像你们写的一样
- 红色的
- 蓝色的
- 黄色的
- 白色的
- 黑色的
- 1:红色
- 2:蓝色
- 3:黄色
- 4:白色
- 5:黑色
$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 */
}
将选择值更改为数字是最简单的方法,其他任何方法都太复杂
--
默认的发布顺序是按日期。如果要为所有查询自动设置订单,或仅为自定义帖子类型查询设置订单,请参见了解默认订单很好,但不能接受此作为答案。我的问题与你的答案无关。请告诉我你想达到什么样的目的。Orderby优先使用其数组内容,因此首先使用第一个声明,然后使用第二个声明,等等。我不希望它按字母顺序排列ASC,而是按“分配”顺序排列ASC。我所说的指派是指我提到的清单。第一个(红色),第二个(蓝色),第三个(黄色)。。等检查我在底部的问题,发现类似的东西。你说的方式让我困惑。编辑我的问题的查询难道不可能吗?通过增加字段数?我认为这不可能像你想的那样。但您可以尝试使用ACF字段命名,如果它是按升序创建的,您可以尝试使用它。查看数据库中的PosteTa表,可以看到每个注册的自定义字段都有另一个前缀为“u”的已注册字段。我不知道这段代码是如何生成的,如果它的格式可能用于排序,你必须尝试一下。了解默认排序很好,但我不能接受这个答案。我的问题与你的答案无关。请告诉我你想达到什么样的目的。Orderby优先使用其数组内容,因此首先使用第一个声明,然后使用第二个声明,等等。我不希望它按字母顺序排列ASC,而是按“分配”顺序排列ASC。我所说的指派是指我提到的清单。第一个(红色),第二个(蓝色),第三个(黄色)。。等检查我在底部的问题,发现类似的东西。你说的方式让我困惑。编辑我的问题的查询难道不可能吗?通过增加字段数?我认为这不可能像你想的那样。但您可以尝试使用ACF字段命名,如果它是按升序创建的,您可以尝试使用它。查看数据库中的PosteTa表,可以看到每个注册的自定义字段都有另一个前缀为“u”的已注册字段。我不知道这段代码是如何生成的,如果它的格式可能用于订购,您必须尝试一下。