2016-02-21 106 views
0

我已經看到類似這樣的幾個問題,但我仍然無法讓事情奏效,所以我想我會問。由多個ACF字段排序

我有一個稱爲'課程'的自定義帖子類型。此CPT有一個名爲'date'的自定義字段,它可以是過去的,將來的或未設置的(null)。

我想寫一個查詢,隱藏過去的課程,然後顯示未來的課程(按日期排序,最早),然後顯示日期未設置(佔位符課程)的課程。

我的計劃是在課程CPT中添加一個'placeholder_course'字段,並且日期框只有在設置爲false時纔會出現。這樣,所有的佔位符對這個字段的值都是1,所以我可以通過這個來排序,讓它們出現在最後,然後按日期排序,以正確地爲日期字段中的值排序。

這是我一直使用的是什麼:

<?php 
    $today = current_time('Ymd'); 
    $args = array(
    'post_type' => 'course', 
    'posts_per_page' => -1, 
    'meta_query' => array(
     'relation' => 'OR', 
     'placeholder' => array(
      'key' => 'placeholder_course', 
      'compare' => '=', 
      'value' => '1 
    ), 
     'future_dates' => array(
      'key' => 'date', 
      'compare' => '>=', 
      'value' => $today, 
    ) 
    ), 
    'orderby' => array(
     'placeholder' => 'ASC', 
     'future_dates' => 'ASC', 
    ), 
    ); 
    ?> 

但排序還是走出混亂。我很確定我在查詢中做了一些錯誤的事情,請問能否請任何人解決問題?

+0

您有一個語法錯誤...並且'orderby'不帶有具有指定鍵的數組。 – rnevius

+0

https://make.wordpress.org/core/2015/03/30/query-improvements-in-wp-4-2-orderby-and-meta_query/似乎表明,在Wordpress中我可以使用指定的關鍵語法> 4.2 ... –

回答

0

建立一個true/false字段中輸入佔位符值(如果沒有日期設置,你可以檢查它),然後將以下代碼通過任何將來的日期或設置爲true

佔位符true/false值的任何職位運行更新: your'e可能將不得不與2查詢做到這一點。

$args = array(
      'post_type' => 'course', 
      'posts_per_page' => -1, 
      'meta_key' => 'date', 
      'meta_query' => array(
       array(
        'key' => 'date', 
        'value' => $today, 
        'compare' => '>=', 
       ), 
      ), 
      'orderby'=> 'meta_value_num', 
      'order' => 'ASC' 
     ); 
$args2 = array(
      'post_type' => 'course', 
      'posts_per_page' => -1, 
      'meta_query' => array(
       array(
        'key' => 'placeholder_course', 
        'value' => true, 
        'compare' => '=', 
       ), 
      ), 
      'order' => 'ASC' 
     ); 
+0

嗨馬克,這確實拉出了未來的日期和真/假設置爲真...但它並沒有按我所希望的順序排列(以日期順序,然後佔位符事件) –

+0

@JoeCzucha我改變了元鍵字段。應該現在好了 – Mark

+0

對不起,我犯了一個錯誤。 lemme redo – Mark