WP_Query - meta_value_num没有任何影响

时间:2012-10-09 21:03:33

标签: php wordpress wordpress-theming

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

2 个答案:

答案 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"
        }
    }
}