2016-02-21 1 views
0

Я видел несколько вопросов, подобных этому, но я все еще не могу заставить все работать, поэтому я думал, что попрошу.Заказ нескольких полей ACF

У меня есть пользовательский тип сообщения, называемый «курс». Этот CPT имеет настраиваемое поле под названием «дата», которое либо прошлое, будущее, либо не установлено (null).

Я пытаюсь написать запрос, который скрывает прошедшие курсы, а затем показывает будущие курсы (упорядоченные по дате, скорее всего сначала), а затем показывает курсы, где дата не установлена ​​(курсы заполнителей).

Мой план состоял в том, чтобы добавить поле «placeholder_course» в курс CPT курса, и поле даты появится только в том случае, если для этого параметра установлено значение 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/false установлен в true

UPDATE: ваш, вероятно, придется сделать это с помощью двух запросов.

$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

Привет Марк, это действительно вытащит будущие даты, а true/false установлен в true ... но он не заказывает его, как я надеялся (с датированными событиями сначала, в порядке даты, а затем события-заполнители) –

+0

@JoeCzucha Я изменил поле мета-ключа. должно быть хорошо сейчас – Mark

+0

извините, я сделал ошибку. lemme redo – Mark