2016-11-01 10 views
1

です。値のプールにmeta_valueがある場合は、DBからポストを取得する必要があります。WP_QueryとOR条件 - パラメータ2が文字列であることが期待されます。配列は

ここに私のコード:

$carConditions = get_option('car-type'); 

if (count($carConditions) == 0) { 
    return null; 
} 

$conditions = array_keys($carConditions); 

$query_args = [ 
    'post_type' => 'vehicle', 
    'post_status' => 'publish',  
    'meta_value' => [ 
     [ 
      'key'  => 'car_condition', 
      'value' => $conditions, 
      'compare' => 'IN' 
     ] 
    ] 
]; 

だから、基本的に私はポストがusedの1またはkm0car_conditionセットを持っているかどうかを確認する必要があります。
私は上記のコードを実行した場合、私が取得:

警告:mysqli_real_escape_string()は、パラメータ2は、文字列、ホーム/浮浪者/ WWW /オート/ WP-含ま/ WP-DB /に与えられた 配列であることを期待しています。

$query_args = [ 
     'post_type' => 'vehicle', 
     'post_status' => 'publish', 
     'meta_key' => 'car_condition', 
     'meta_value' => 'used', 
    ]; 

問題がある:私はちょうどそれが動作する一つの条件で問い合わせる場合 ライン1166

上のPHP?

答えて

0

ここで私はどのように解決しましたか。
基本的にすべての車の状態を取得する簡単なforeach:

$query_args = [ 
    'post_type' => 'vehicle', 
    'post_status' => 'publish' 
]; 
$metaQuery = [ 
    'relation' => 'OR' 
]; 
foreach ($conditions as $condition) { 
    $metaQuery[] = [ 
     'key'  => 'car_condition', 
     'value' => $condition, 
     'compare' => '=' 
    ]; 
} 
$query_args['meta_query'] = $metaQuery; 
関連する問題