当我试图将四个不同的meta\\u查询值传递给我的WP\\u查询时,我遇到了一个相当奇怪的问题。
下面是我的WP\\U查询搜索示例。请记住,如果我自己删除并测试这些meta\\u查询中的每一个,它们都可以正常工作。就在他们四岁的时候,我没有得到任何结果。即使我将这些值留空,我的查询中仍然没有收到任何帖子!
$v_args = array(
\'post_type\' => \'loads_available\',
\'s\' => "Post Name",
\'meta_query\' => array(
array(
\'key\' => \'type_of_load\',
\'value\' => "Frozen",
\'compare\' => \'=\',
),
array(
\'key\' => \'number_of_pallets\',
\'value\' => 2,
\'compare\' => \'>=\',
\'type\' => \'NUMERIC\'
),
array(
\'key\' => \'type_of_trailer_required\',
\'value\' => "Trailor",
\'compare\' => \'=\',
),
// ^ problem
array(
\'key\' => \'euro_pallets\',
\'value\' => "Yes",
\'compare\' => \'=\'
)
)
);
$loadsAvailableQuery = new WP_Query( $v_args );
现在我想说清楚,这些meta\\u查询值在单独的基础上工作得很好,例如,当我开始尝试将它们相互结合使用时。
搜索查询将是:
岗位名称:“岗位名称”装载类型:“冻结”托盘数量:5所需拖车类型:“拖车”欧洲托盘:“是”
这不会给我任何结果,即使我确信有符合标准的帖子。感觉我可能在查询中遗漏了一些东西,我读到了关于使用关系的内容,但默认为“OR”-我认为这是正确的值。
我的代码中是否有任何常见的误解或明显的缺陷,我在这里看不到?
非常感谢您的回复。
最合适的回答,由SO网友:EHerman 整理而成
您可能需要尝试添加\'RELATION\' =>
参数添加到元查询数组中,以便包含所有元值。类似这样:
$v_args = array(
\'post_type\' => \'loads_available\',
\'s\' => "Post Name",
\'meta_query\' => array(
\'relation\' => \'AND\',
array(
\'key\' => \'type_of_load\',
\'value\' => "Frozen",
\'compare\' => \'=\',
),
array(
\'key\' => \'number_of_pallets\',
\'value\' => 2,
\'compare\' => \'>=\',
\'type\' => \'NUMERIC\'
),
array(
\'key\' => \'type_of_trailer_required\',
\'value\' => "Trailor",
\'compare\' => \'=\',
),
// ^ problem
array(
\'key\' => \'euro_pallets\',
\'value\' => "Yes",
\'compare\' => \'=\'
)
)
);
$loadsAvailableQuery = new WP_Query( $v_args );
根据您的用例,您可能需要根据用户查询设置一个变量来切换查询中的关系参数。
注意:关系参数也可以设置为\'OR\'
.
签出WP_Query codex