Php Wordpress元查询或/和关系不工作
我有一个带有多个分类选项的搜索表单。当我选择所有选项,或仅选择一个选项,然后单击“搜索”时,它不会返回任何记录。我在理解关系和如何正确设置数组方面有问题Php Wordpress元查询或/和关系不工作,php,wordpress,Php,Wordpress,我有一个带有多个分类选项的搜索表单。当我选择所有选项,或仅选择一个选项,然后单击“搜索”时,它不会返回任何记录。我在理解关系和如何正确设置数组方面有问题 $args = array('post_type' => array( 'property' ), 'order' => 'DESC', 'orderby' => 'post_date', 'meta_query' => array(
$args = array('post_type' => array( 'property' ),
'order' => 'DESC',
'orderby' => 'post_date',
'meta_query' => array(
'relation' => 'AND',
array(
array(
'key' => 'property_address_postal_code',
'value' => $search,
'compare' => 'LIKE',
),
array(
'key' => 'property_address_state',
'value' => $search,
'compare' => 'LIKE',
),
array(
'key' => 'property_location',
'value' => $search,
'compare' => 'LIKE',
),
),
array(
'relation' => 'OR',
array(
'relation' => 'AND',
array(
'key' => 'property_price',
'value' => array($_GET['min-price'],$_GET['max-price']),
'type' => 'numeric',
'compare' => 'BETWEEN',
),
),
array(
'relation' => 'AND',
array(
'key' => 'property_price',
'value' => array($_GET['min-price'],$_GET['max-price']),
'type' => 'numeric',
'compare' => 'BETWEEN',
),
),
)
)
);
首先,我不确定您是否完全理解relation属性在这个函数中的应用。它将
和/或应用于同一级别的其他属性。因此,您的第一个关系=>和确保$search
变量与您指定的属性之一匹配,并且属性\u price
介于最小值和最大值之间
其次,对于后续的嵌套元查询,默认关系是和
,因此当您尝试对不同的属性匹配$search
时,实际上是在尝试确保$search
匹配您指定的所有属性。您可以通过尝试将$search
与一个属性或另一个属性匹配来修复此问题
第三,通过将价格与最小和最大价格进行比较,元查询的格式不正确,并且这两个元查询是相同的。在这种情况下,您不需要关系,因为您只需要检查一个值
您可以简化代码,如下所示:
$args = array('post_type' => array( 'property' ),
'order' => 'DESC',
'orderby' => 'post_date',
'meta_query' => array(
'relation' => 'AND',
array(
'relation' => 'OR',
array(
'key' => 'property_address_postal_code',
'value' => $search,
'compare' => 'LIKE',
),
array(
'key' => 'property_address_state',
'value' => $search,
'compare' => 'LIKE',
),
array(
'key' => 'property_location',
'value' => $search,
'compare' => 'LIKE',
),
),
array(
'key' => 'property_price',
'value' => array($_GET['min-price'],$_GET['max-price']),
'type' => 'numeric',
'compare' => 'BETWEEN',
)
)
);
现在,您正在进行一个查询,检查$search
是否类似于属性地址\u potal\u code
或类似于属性地址\u状态
或类似于属性位置
和属性价格
介于最低和最高价格之间
根据代码中的其他逻辑,您可能仍然需要对其进行一些修改,但我认为这会让您朝着正确的方向前进。谢谢,您是我的明星。一切都和你说的一模一样,我理解SQL查询中的关系,但在Wordpress meta_查询中我不理解。再次感谢您提供的解决方案。我喜欢认为元查询函数类似于PHPinfrade()
,因为关系将每个元查询粘合在一起,使用特定的关系作为分隔符。我希望这能帮助你更好地理解函数!