多个元键提供错误的结果
Multiple meta key provide wrong result
我遇到多个元键无法协同工作的问题。我有 100 个 posts,它们有 1 个元键是价格,1 个元键是价格类型。在价格中,我们存储价格,在价格类型中,我们存储固定、可协商、随叫随到。此处随叫随到的 post 未随价格过滤器一起显示。如果用户按 100 到 500 的价格范围搜索,那么我需要显示 on call posts 但不显示。待命 post 的价格字段为空白。那么我如何显示价格范围内的通话 posts。这是查询。
<?php
$args = array(
‘s’ => $title,
‘post_type’ => ‘ad_post’,
‘post_status’ => ‘publish’,
‘posts_per_page’ => 100, //New Custom Code
‘post__in’ => (!empty($postArr))? $postArr : [],
‘tax_query’ => array(
$category,
$ad_types,
),
‘meta_query’ => [
‘relation’ => ‘AND’,
$price,
$custom_search,
[
‘relation’ => ‘OR’,
$priceType,
],
],
‘order’ => $order,
‘orderby’ => $orderBy,
‘paged’ => $paged,
);
$price = array(
‘key’ => ‘price’,
‘value’ => array($_GET[‘min_price’], $_GET[‘max_price’]),
‘type’ => ‘numeric’,
‘compare’ => ‘BETWEEN’,
);
$priceType = array(
‘key’ => ‘price_type’,
‘value’ => array(‘Negotiable’,’Fixed’,’on_call’),
‘compare’ => ‘IN’
);
我也有 tax_query 所以所有组合都不能一起工作。
所以我需要使用价格范围过滤器显示随叫随到 post。始终价格过滤器删除价格类型过滤器。
post 在 postmeta table 中随叫随到,价格 = 空白且 price_type = on_call
哪个广告的价格类型 = 固定且价格 = 100 或其他一些值。
请帮忙。
如果我没理解错的话,您想过滤产品 价格 或 类型以等于 on_call
.
为此,您必须按如下方式稍微更改您的查询:
‘meta_query’ => [
‘relation’ => ‘AND’,
$custom_search,
[
‘relation’ => ‘OR’,
$priceType,
$price,
],
],
和
$priceType = array(
‘key’ => ‘price_type’,
‘value’ => array(‘on_call’),
‘compare’ => ‘IN’
);
意思是“custom_search AND (priceType OR price)”。
我遇到多个元键无法协同工作的问题。我有 100 个 posts,它们有 1 个元键是价格,1 个元键是价格类型。在价格中,我们存储价格,在价格类型中,我们存储固定、可协商、随叫随到。此处随叫随到的 post 未随价格过滤器一起显示。如果用户按 100 到 500 的价格范围搜索,那么我需要显示 on call posts 但不显示。待命 post 的价格字段为空白。那么我如何显示价格范围内的通话 posts。这是查询。
<?php
$args = array(
‘s’ => $title,
‘post_type’ => ‘ad_post’,
‘post_status’ => ‘publish’,
‘posts_per_page’ => 100, //New Custom Code
‘post__in’ => (!empty($postArr))? $postArr : [],
‘tax_query’ => array(
$category,
$ad_types,
),
‘meta_query’ => [
‘relation’ => ‘AND’,
$price,
$custom_search,
[
‘relation’ => ‘OR’,
$priceType,
],
],
‘order’ => $order,
‘orderby’ => $orderBy,
‘paged’ => $paged,
);
$price = array(
‘key’ => ‘price’,
‘value’ => array($_GET[‘min_price’], $_GET[‘max_price’]),
‘type’ => ‘numeric’,
‘compare’ => ‘BETWEEN’,
);
$priceType = array(
‘key’ => ‘price_type’,
‘value’ => array(‘Negotiable’,’Fixed’,’on_call’),
‘compare’ => ‘IN’
);
我也有 tax_query 所以所有组合都不能一起工作。 所以我需要使用价格范围过滤器显示随叫随到 post。始终价格过滤器删除价格类型过滤器。 post 在 postmeta table 中随叫随到,价格 = 空白且 price_type = on_call 哪个广告的价格类型 = 固定且价格 = 100 或其他一些值。
请帮忙。
如果我没理解错的话,您想过滤产品 价格 或 类型以等于 on_call
.
为此,您必须按如下方式稍微更改您的查询:
‘meta_query’ => [
‘relation’ => ‘AND’,
$custom_search,
[
‘relation’ => ‘OR’,
$priceType,
$price,
],
],
和
$priceType = array(
‘key’ => ‘price_type’,
‘value’ => array(‘on_call’),
‘compare’ => ‘IN’
);
意思是“custom_search AND (priceType OR price)”。