我有一个查询,它返回所有自定义帖子类型,按正确的字段排序。我现在要做的是为它添加一个过滤器;我要介绍的唯一新项目是meta_compare和meta_value_num字段。
以下是我的查询:
array(9) {
["post_type"]=> string(16) "my_custom_post_type"
["post_status"]=> string(7) "publish"
["posts_per_page"]=> int(9)
["paged"]=> int(2)
["meta_key"]=> string(3) "age"
["meta_value_num"]=> array(2) {
[0]=> int(3)
[1]=> int(4)
}
["meta_compare"]=> string(1) "="
["orderby"]=> string(14) "meta_value_num"
["order"]=> string(3) "ASC"
}
即使我将meta_value_num设为单个int而不是数组,它仍然会返回所有项目,而不仅仅是指定年龄的项目。
更新
我也根据下面的推荐尝试了这个阵列,但也没有运气。它仍会返回自定义帖子类型的所有帖子。
array(5) {
["post_type"]=>string(16) "my_custom_post_type"
["post_status"]=>string(7) "publish"
["posts_per_page"]=>int(9)
["paged"]=>int(0)
["meta_query"]=>array(4) {
["key"]=>string(3) "age"
["value"]=>array(3) {
[0]=>int(2)
[1]=>int(3)
[2]=>int(4)
}
["compare"]=>string(2) "IN"
["type"]=>string(7) "NUMERIC"
}
}
答案 0 :(得分:0)
我不确定,但您可以尝试更改此查询:
$args = array(
'post_type' => 'my_custom_post_type',
'post_status' => 'publish',
'post_per_page' => 9,
'paged' => 2,
'meta_query' => array(
'key' => 'age',
'value' => array(3, 4),
'compare' => 'IN',
),
'orderby' => 'meta_value_num',
'order' => 'ASC',
);
答案 1 :(得分:0)
'meta_query'必须是一个数组。该数组包含一个带键,值和比较(以及可选的类型)的数组。这允许meta_query在其中包含多个查询(例如age = 5,color = red)。
因此,这不起作用的原因是meta_query必须有两个数组。
array(8) {
["post_type"]=>string(16) "myartlab_gallery"
["post_status"]=>string(7) "publish"
["posts_per_page"]=>int(9)
["paged"]=>int(2)
["meta_key"]=>string(3) "age"
["orderby"]=>string(14) "meta_value_num"
["order"]=>string(3) "ASC"
["meta_query"]=>array(1) {
[0]=>array(4) {
["key"]=>string(3) "age"
["value"]=>array(3) {
[0]=>int(4)
[1]=>int(5)
[2]=>int(6)
}
["compare"]=>string(2) "IN"
["type"]=>string(7) "NUMERIC"
}
}
}