按子字段值 ACF 的元查询帖子

Nic*_*ick 2 wordpress advanced-custom-fields

我正在尝试查询子字段值为“奥迪”的帖子。我看了又看,但找不到答案。我拥有的 $args 在下面,数据库中存在与“audi”匹配的帖子作为中继器“cars”的子字段“model”的值。

$args = array(
    'post_type' => 'manufacturers',
    'meta_query' => array(
       array(
        'key' => 'cars_%_model',
        'value' => 'audi',
        'compare' => 'LIKE'
       )
    )
);
$query = new WP_Query($args);
Run Code Online (Sandbox Code Playgroud)

任何有关此代码在哪里下降的提示都将不胜感激。

rhy*_*lay 5

我在这上面花了几个小时,并为您提供了一个解决方案:

您需要做的第一件事是设置一个过滤器,用“LIKE”比较替换“=”比较(包括在您之前的代码上方):

function my_posts_where( $where ) {
     $where = str_replace("meta_key = 'cars_", "meta_key LIKE 'cars_", $where);
     // note if using wordpress < v4.8.3 add a % to the meta key like this: meta_key = 'cars_%",...
     return $where;
}

add_filter('posts_where', 'my_posts_where');
Run Code Online (Sandbox Code Playgroud)

现在您需要做的就是将您的 meta_query 比较更新为“=”:

$args = array(
    'post_type' => 'manufacturers',
    'meta_query' => array(
       array(
        'key' => 'cars_%_model',
        'value' => 'audi',
        'compare' => '='
       )
    )
);
$query = new WP_Query($args);
Run Code Online (Sandbox Code Playgroud)

这包含在ACF 文档中,但是该文档没有提到此处提到的 Wordpress 4.8.3 之后的更新。