也许这是一个非常愚蠢的问题,但我无法解决。当我阅读该代码时,它就可以了,但是我不知道如何更改它才能正常工作。这是查询:
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”。
有人吗?
答案 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”。有时使用它会有“意外”结果。