WordPress查询参数是否为两个值

时间:2018-08-21 13:32:47

标签: php wordpress arguments

也许这是一个非常愚蠢的问题,但我无法解决。当我阅读该代码时,它就可以了,但是我不知道如何更改它才能正常工作。这是查询:

return array(
        'post_type' => 'page',
        'post_status' => 'publish',
        'meta_query' => array(
            'is_featured' => array(
                'key' => 'featured',
                'compare' => 'EXISTS'
            ),
            array(
                'key'       => 'pakket-of-dienst',
                'value'     => array('vps hosting'),
                'compare'   => 'IN',
            ),
        ),
        'orderby' => array(
            'is_featured' => 'DESC'
        )
    );

它将选择所有具有“ vps托管” pakket-of-dienst值的页面,并且当存在带有键“ featured”的页面时,它也会显示该页面。

问题在于存在不同的pakket-of-dienst值。

如何使查询仅选择pakket-of-dienst为“ vps托管”且功能值为0或1的页面?

现在的问题是,当pakket-of-dienst是“ vps托管”时,他还显示pakket-of-dienst的精选页面是“ webhosting”。

有人吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试以下方法:

return [
    'post_type'   => 'page',
    'post_status' => 'publish',
    'meta_query'  => [
        'relation' => 'AND',
        [
            'relation' => 'OR',
            [
                'key'   => 'featured',
                'value' => 1
            ],
            [
                'key'   => 'featured',
                'value' => 0
            ]
        ],
        [
            'key'   => 'pakket-of-dienst',
            'value' => 'vps hosting', //no need "in" as you check against one value only
        ],
    ],
    'orderby'     => [
        'is_featured' => 'DESC'
    ]
];

注意:我倾向于避免使用“ EXIST”运算符(对于meta_query或tax_query),并且更喜欢在ID或键/值上使用“ IN”。有时使用它会有“意外”结果。