2014-03-05 21 views
2

我一直在抨擊現在幾個小時的錯誤,似乎無法找到我的錯誤。在Wordpress中是否會有關係類型爲'OR'的錯誤?WP_Query - 與關係'OR'的Meta_Query不起作用

$evenements = new WP_Query(array(
    'post_type'  => 'evenements', 
    'orderby'  => 'meta_value', 
    'meta_key'  => 'startDate', 
    'order'   => 'ASC', 
    'meta_query' => array(
     'relation' => 'OR', 
     array(
      'key'  => 'startDate', 
      'value'  => date('Ymd'), 
      'compare' => '>=', 
     ), 
     array(
      'key'  => 'endDate', 
      'value'  => date('Ymd'), 
      'compare' => '>=', 
     ), 
    ), 
)); 

奇怪的是,如果我把'AND'關聯起來,它就像預期的那樣工作。如果兩個陳述都是真實的,那麼這個帖子就會出現。如果我把「OR」關聯起來,所有帖子都會顯示出來,並且由於某種原因,即使訂單也不能正常工作。即使改變從「ASC」到「DESC」秩序'不會改變結果出來的順序

理解查詢,這裏的正是我想要做的細節:

我想展示正在進行或將來的活動。兩個metas是事件開始的日期(startDate)和事件結束的日期(endDate)。

因此,如果開始日期高於或等於(如果事件發生在今天)到今天或結束日期高於或等於今天,請顯示帖子。

第二部分(包含結束日期)將會顯示正在進行的事件,並且我不能刪除第一部分(包含開始日期),因爲如果事件只持續一天,則客戶端將只會輸入startDate元。

我放棄了來自插件的bug,因爲我禁用了所有的插件,並且bug仍然存在。

回答

0

OR關係看起來很好(meta_query也是如此)。我會看看你的比較值的語法(例如,你確定要爲這兩個值使用>=)。通常在使用開始日期和結束日期時,您希望查找這兩個日期之間的值。你的方式會發現所有的值作爲startDate通常意味着在endDate之前,你想在startDate之後的任何東西。

因此,您不必startDate >= date(Ymd) <= endDatestartDate || endDate >= date(Ymd)

+0

我的比較沒有問題,我希望所有的開始日期或結束日期都高於或等於今天。但也許應該試圖改變它們,看看結果是否仍然不符合我們的預期。 – Fredy31