2015-12-22 54 views
0

如果我使用一個元數組的值我可以看到一個值時查詢它是否在數組中?我有一個網站,其中包含日期附加到它作爲一個元值的事件,我需要通過搜索查看某個事件是否在某個日期。通過meta_value的Wordpress搜索多數民衆贊成在一個數組

$dates[] = 05/02/2016 
$dates[] = 06/02/2016 
$dates[] = 06/02/2016 
update_post_meta($event, 'show_dates', $dates); 

如果我把這個添加到事件我怎麼才能檢查'show_dates'是否包含搜索日期?下面是我已經嘗試過

$wp_query->set('post_status', array('publish', 'future')); 
$wp_query->set("meta_key", "show_dates"); 
$wp_query->set("orderby", "meta_value"); 
$wp_query->set("order", "ASC"); 

     $startDate = parseDatePicker($_GET['StartDate'], new \DateTime()); 

     if (!is_null($startDate)) { 

      $wp_query->set("meta_query", array(
       array(
        'key' => "show_dates", 
        'value' => $startDate->format("d/m/Y"), 
        'compare' => 'IN' 
       ) 
      )); 
     } 

回答

1

好吧,原來這個答案比我想象的要容易。當Wordpress序列化數組中的數據時,您可以使用LIKE而不是IN,它將檢查序列化數組以查看它是否包含該日期。

$wp_query->set('post_status', array('publish', 'future')); 
$wp_query->set("meta_key", "show_dates"); 
$wp_query->set("orderby", "meta_value"); 
$wp_query->set("order", "ASC"); 

    $startDate = parseDatePicker($_GET['StartDate'], new \DateTime()); 

    if (!is_null($startDate)) { 

     $wp_query->set("meta_query", array(
      array(
       'key' => "show_dates", 
       'value' => $startDate->format("d/m/Y"), 
       'compare' => 'LIKE' 
      ) 
     )); 
    } 

我的下一個問題是如何與一系列工作,我設法弄清楚這一點,並已發佈低於櫃面nayone人有類似的問題

if (!is_null($startDate) && !is_null($endDate) && ($startDate->format('d/m/Y') != $endDate->format('d/m/Y'))) { 

      $wp_query->set("relation", "OR"); 

      $interval = DateInterval::createFromDateString('1 day'); 
      $period = new DatePeriod($startDate, $interval, $endDate); 
      $dates[] = $startDate->format('d/m/Y'); 

      foreach($period as $day){ 

       $dates[] = array(
        'key' => "next_showing_date", 
        'value' => $day->format('d/m/Y'), 
        'compare' => 'LIKE', 
       ); 

      } 

      $wp_query->set("meta_query", $dates); 

     } 
相關問題