0

我有一个查询,它返回我所有的自定义帖子类型,按正确的字段排序。我现在要做的是为其添加一个过滤器;我要介绍的唯一新项目是 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"
    }
}
4

2 回答 2

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',
);
于 2012-10-09T21:56:39.480 回答
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"
        }
    }
}
于 2012-10-09T23:12:32.873 回答