2016-09-29 96 views
1

我正在使用php進行wp查詢。在每個陣列中循環使用

首先我需要得到的帖子ID的數組,使用這種

$artists_ID_array = get_field("page_artiste"); 

(我使用的是先進的自定義字段有關係,反正也無所謂......我得到的值的數組)

這裏是陣列的樣子:

陣列([0] => 141 [1] => 59)

然後是我的ARGS:

$videos = get_posts(
    array(
     'post_type' => 'videos', 
     'post__not_in' => array($post->ID), 

      'meta_query' => array(

      array(
       'key' => 'page_artiste', 
       'value' => $artists_ID_array[0], 
       'compare' => 'LIKE' 
      ), 
      array(
       'key' => 'page_artiste', 
       'value' => $artists_ID_array[1], 
       'compare' => 'LIKE' 
      ), 
      array(
       'key' => 'page_artiste', 
       'value' => $artists_ID_array[2], 
       'compare' => 'LIKE' 
      ), 
      array(
       'key' => 'page_artiste', 
       'value' => $artists_ID_array[3], 
       'compare' => 'LIKE' 
      ), 
      array(
       'key' => 'page_artiste', 
       'value' => $artists_ID_array[4], 
       'compare' => 'LIKE' 

等等......在我的元查詢中,我使用了所有的數組結果。

它工作正常,我得到我想要的職位。

但是,你可以想象我正在試圖做的是爲了避免在我的參數「$ artists_ID_array [4]」中有所有thoses數組,並且在我的數組中循環。

所以這裏是我試過,但它不工作...我不明白爲什麼...

<?php 

$artists_ID_array = get_field("page_artiste"); 

$videos = array(
     'post_type' => 'videos', 
     'post__not_in' => array($post->ID), 
      'meta_query' => array(

    ) 
); 

foreach($artists_ID_array as $value) { 
    array_push($videos['meta_query'], array(
       'key' => 'page_artiste', 
       'value' => $value, 
       'compare' => 'LIKE' 
    )); 

} 

?> 

任何人可以幫助我嗎? 希望你能理解我的要求

回答

1

我相信你可以進一步簡化這個,因爲meta_query比較允許您使用值「IN」

「IN」(而不是像)允許你搜索的值對於給定數組中的任何值。

所以你可以get_posts看起來是這樣的:

$videos = get_posts(
    array(
    'post_type' => 'videos', 
    'post__not_in' => array($post->ID), 

    'meta_query' => array(

     array(
      'key' => 'page_artiste', 
      'value' => $artists_ID_array, 
      'compare' => 'IN' 
     ) 
    ) 
    ) 
);