多个元键提供错误的结果

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)”。