如何按元值设置多个元键顺序,谁能给我一些例子?
#1 楼
meta_query
是元条款的数组。例如:$q = new WP_Query( array(
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'state',
'value' => 'Wisconsin',
),
array(
'key' => 'city',
'compare' => 'EXISTS',
),
),
) );
您可以使用关联数组,并为每个meta子句添加键:
$q = new WP_Query( array(
'meta_query' => array(
'relation' => 'AND',
'state_clause' => array(
'key' => 'state',
'value' => 'Wisconsin',
),
'city_clause' => array(
'key' => 'city',
'compare' => 'EXISTS',
),
),
) );
然后,您可以在
order_by
参数中使用该键,并带有以下内容:$q = new WP_Query( array(
'meta_query' => array(
'relation' => 'AND',
'state_clause' => array(
'key' => 'state',
'value' => 'Wisconsin',
),
'city_clause' => array(
'key' => 'city',
'compare' => 'EXISTS',
),
),
'orderby' => 'city_clause', // Results will be ordered by 'city' meta values.
) );
或更多子句:
$q = new WP_Query( array(
'meta_query' => array(
'relation' => 'AND',
'state_clause' => array(
'key' => 'state',
'value' => 'Wisconsin',
),
'city_clause' => array(
'key' => 'city',
'compare' => 'EXISTS',
),
),
'orderby' => array(
'city_clause' => 'ASC',
'state_clause' => 'DESC',
),
) );
示例摘自Make WordPres Core博客中的帖子。
评论
不要忘记添加元键/值的类型。它会影响结果。默认情况下,wp会将您的meta视为字符串。
–亚历山大·伊瓦申科(Alexander Ivashchenko)
18/12/12在11:54
但是,如果我不想只返回威斯康星州的结果怎么办?我希望返回所有州,并且希望有可能没有城市的行仍然按这2个字段排序。例如根本没有WHERE子句-只是一个ORDER BY。
–费利克斯·夏娃(Felix Eve)
19年5月9日在9:40
对于这些要求,Felix的解决方法可能是在meta_query中包含最终的“全部捕获”,并将其放在orderby语句的最后。因此,meta_query中的前几个子句将首先获取您要排序的特定结果。然后,您的最后一个子句将是您之前的子句以外的所有内容。
–马特键
20-10-2在19:30
评论
欢迎使用WPSE-为我们提供帮助,您需要帮助我们。您能否更详细地描述您要做什么,并可能发布一些代码示例。