meta_query с массивом как значение с несколькими массивами

Уже получили некоторые подсказки о том, как это сделать,

см. здесь: meta_query с массивом как значение

но я запутался в нескольких meta_queries, как это:

for ($i=0; $i< count($amenities); $i++) { $count = count($arrays); $arrays[$count] = array( 'key' => 'amenities', 'value' => $amenities[$i], 'compare' => 'LIKE' ); } for ($j=0; $j< count($amenities2); $j++) { $count2 = count($arrays2); $arrays2[$count2] = array( 'key' => 'amenities', 'value' => $amenities[$j], 'compare' => 'LIKE' ); } 

то как включить $ arrays2 в запрос ниже с 'отношением' => 'AND'?

 $the_query = new WP_Query(array( 'post_type' => 'listing', 'post_status' => 'publish', 'category_name' => 'private_rental', 'meta_query' => $arrays )); 

Отношение по умолчанию AND поэтому вам действительно не нужно указывать это, но я покажу вам, как это сделать.

На самом деле у вас просто проблема с массивом.

 $amenities = array('a','b','c'); $amenities2 = array('d','e','f'); foreach ($amenities as $a) { $arrays[] = array( 'key' => 'amenities', 'value' => $a, 'compare' => 'LIKE' ); } foreach ($amenities2 as $a2) { $arrays2[] = array( 'key' => 'amenities', 'value' => $a2, 'compare' => 'like' ); } $meta_query = array('relation' => 'AND'); $meta_query[] = $arrays; $meta_query[] = $arrays2; var_dump($meta_query); 

Я также очистил ваш код. Это было слишком сложно и сломано. Операторы if были излишними для итерации по массиву и $count = count($arrays); линии были ненужными и ничего не делали, поскольку вы count массивы до их создания. Даже если бы это сработало, у вас была возможность сжать одно значение с другим. Если бы подсчеты были равны, вы бы переписали часть массива, а не добавляли к нему.

Конечно, это не единственный способ собрать финальный массив. На самом деле, возможно, это не так, как если бы это был мой код. Это, вероятно, самый простой способ продемонстрировать вещи.