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 に 2 つの配列が必要だからです。

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 に答える