2017-01-25 10 views
0

中%と協力し、このACFリピータ問い合わせは、私が「courier_pricing _%_価格」と呼ばれるACFリピータフィールドを持って提出名

$args = array(
'posts_per_page' => -1, 
'post_type'  => 'courier', 
'meta_query' => array(
    'relation'  => 'AND', 
    array(
     'key'  => "courier_pricing_%_price", 
     'compare' => ">=", 
     'value'  => '30', 
    ), 
) 
); 

のような記事を照会しようとしているが、それは、フィールド名に「%」を思いません

を働いていない要求されたSQLは次のとおりです。

SELECT wp_posts.* FROM wp_posts INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id) WHERE 1=1 AND ( 
    (wp_postmeta.meta_key = 'courier_pricing_%_price' AND wp_postmeta.meta_value = '30') 
) AND wp_posts.post_type = 'courier' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'acf-disabled' OR wp_posts.post_status = 'private') GROUP BY wp_posts.ID ORDER BY wp_posts.menu_order, wp_posts.post_date DESC 

はそれが

行を思わ

は私がACFの苦しみにこの問題を解決するために任意のヘルプを https://www.advancedcustomfields.com/resources/query-posts-custom-fields/

をしてください使用し、「=」を「LIKE」とPHPMyAdminのでクエリをテストし、それがうまく

作業を変更する問題であり、事前

答えて

0

の多くのおかげで、このソリューション https://support.advancedcustomfields.com/forums/topic/meta-query-the-repeater-field/

を発見し、私はこのような小さな道を使用:

function whereCourier($where) 
{ 
    $where = str_replace("meta_key = 'courier_pricing_%_price'", "meta_key LIKE 'courier_pricing_%_price'", $where); 
    return $where; 
} 

function searchCourier() 
{ 
    $meta_query[] = [ 
     'relation' => 'AND', 
     [ 
      'key' => "courier_pricing_%_price", 
      'compare' => ">=", 
      'value' => '30', 
     ], 
    ]; 

    $args = [ 
     'posts_per_page' => -1, 
     'post_type' => 'courier', 
     'meta_query' => $meta_query 
    ]; 

    add_filter('posts_where', 'whereCourier'); 
    $query = new WP_Query($args); 
    remove_filter('posts_where', 'whereCourier'); 

    return $query; 
} 

$query = searchCourier(); 
if($query->have_posts()){ 
    while ($query->have_posts()) { 
     $query->the_post(); 
     echo get_the_ID(); 
    } 
} 
関連する問題