代码之家  ›  专栏  ›  技术社区  ›  user2812779

wordpress查询参数如果有两个值,则

  •  0
  • user2812779  · 技术社区  · 6 年前

    也许这是一个非常愚蠢的问题,但我无法理解。当我读到代码时,它是有意义的,它做它所做的,但我不知道如何改变它来正常工作。这是一个查询:

    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'
            )
        );
    

    它选择所有具有dienst值的paket为“vps hosting”的页面,当存在具有“featured”键的页面时,它也将显示此页面。

    问题是存在多个dienst值包。

    我如何才能让查询只选择Pakket of Dienst是“vps hosting”且Featured值为0或1的页面?

    现在的问题是,当dienst的pakket是“vps hosting”时,他还显示了dienst的pakket的特色页面是“webhosting”。

    有人吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Mtxz    6 年前

    你能试试这个吗?

    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或key/value上使用“in”。我有时会有“意想不到”的结果。