Как создать wp_query, содержащий одновременно meta_query и tax_query

14 июн. 2011 г., 00:02:09
Просмотры: 22.7K
Голосов: 6

У меня есть wp_query, который отлично работает, но я не могу использовать одновременно meta query и tax_query.

<?php 
    $event_query = new WP_Query(
        array( 
          'post_type'  => 'event',        // запрашиваем только события
          'meta_key'    => 'event-date',  // загружаем мета-поле даты события
          'orderby'     => 'meta_value',
          'order'       => 'asc',         // по возрастанию, чтобы ранние события были первыми
          'posts_per_page' => '-1',
          'meta_query'  => array(
             array(         // ограничиваем записи на основе мета-значений
              'key'     => 'event-date',  // какую мету запрашивать
              'value'   => date("Y/m/d"),  // значение для сравнения
              'compare' => '>',          // метод сравнения
              'type'    => 'DATE'  )
             ),
          'tax_query' => array(
            array(
                'taxonomy'  => 'event_category',
                'field'     => 'slug',
                'terms'     => $term_id,
                'operator'  => 'IN')

                ),

           ) // конец массива
        ); // закрытие конструктора WP_Query

?>

Я пытаюсь найти все события в таксономии $term_id и убедиться, что они все в будущем, и отсортировать их по возрастанию.

Есть идеи?

0
Все ответы на вопрос 1
3

Запрос выглядит правильно, и я знаю, что meta_query и tax_query отлично работают вместе. Единственное, что приходит на ум — вы запрашиваете таксономию по слагу, но передаёте ID термина, а это две разные вещи. Замените:

'field'     => 'slug',

на

'field'     => 'id',

в вашем tax_query.

14 июн. 2011 г. 01:03:40
Комментарии

Я попробовал это, но ничего не изменилось. Думаю, проблема в том, как я получаю id. Кажется, он не выдает правильный id

TJ Sherrill TJ Sherrill
14 июн. 2011 г. 19:26:43

Ты был прав, я оставил Field как Slug, затем создал переменную со слагом и использовал её. Спасибо

TJ Sherrill TJ Sherrill
14 июн. 2011 г. 19:52:39

нужно использовать "term_id" вместо "id". Возможные значения: 'term_id', 'name' и 'slug'. По умолчанию используется 'term_id'.

Shoaib Iqbal Shoaib Iqbal
11 сент. 2015 г. 07:55:47