Налоговый запрос Wordpress с отношением ИЛИ не работает - PullRequest
0 голосов
/ 02 февраля 2019

Я запускаю цикл wordpress, который захватывает сообщения из двух типов сообщений.

Мне нужен цикл, чтобы получать сообщения с определенными категориями.Поскольку это два отдельных типа сообщений, у них обоих есть таксономия категории.Когда пользователь выбирает одну из категорий во внешнем интерфейсе, я хочу, чтобы цикл извлекал все записи из одного типа поста с этой категорией в соответствии с его таксономией, а также все посты из другого типа поста с этой категорией в рамках его таксономии.

Чтобы упростить описание того, что я пытаюсь сделать:

  • Пользователь нажимает на категорию "Уход за волосами и кожей" на передней панели
  • Петля захватывает всесообщения в разделе «post» с категорией «hair-skin-care» из «category_name»
  • Loop получает все сообщения в разделе «quizzes» с категорией «hair-skin-care» из «quiz_category»
  • Отображает все сообщения, которые были найдены

Получение цикла для захвата обоих типов сообщений не было проблемой, но я застрял при попытке заставить цикл захватывать только сообщения с определенными категориями.Я пробую 'tax_query', но циклы, кажется, просто полностью его игнорируют, как будто я вообще не ставил tax_query.

Запуск либо 'category_name', либо 'quiz_category' самостоятельноза пределами tax_query работает просто отлично.Но в пределах tax_query они оба полностью игнорируются.

    $cat = $_GET['cat'];
    $cat = sanitize_text_field($cat);

    $args = array(
        'post_type' => array('post', 'quizzes'),
        'posts_per_page' => -1,
        'category__not_in' => array( 9, 10 ),
        'tax_query' => array(
            'relation' => 'OR',
            array(
                'taxonomy' => 'category_name',
                'field'    => 'slug',
                'terms'    => $cat
            ),
            array(
                'taxonomy' => 'quiz_category',
                'field'    => 'slug',
                'terms'    => $cat
            ),
        )
    );

1 Ответ

0 голосов
/ 02 февраля 2019

Я думаю, проблема в том, что вы передаете строку для значения термина slug.

За пределами tax_query я думаю, что вы можете передать либо строку, либо массив.Внутри tax_query, с несколькими таксономиями, единственные примеры, которые я вижу в документации , обернуты в массивы.

В документах не указано конкретно, где я могу найти,Однако, если бы вы могли просто использовать строку вместо массива, этот фрагмент, который я скопировал непосредственно из вышеупомянутых документов, был бы тем местом, которое должно быть показано:

$args = array(
    'post_type' => 'post',
    'tax_query' => array(
        'relation' => 'OR',
        array(
            'taxonomy' => 'category',
            'field'    => 'slug',
            'terms'    => array( 'quotes' ),
        ),
        array(
            'taxonomy' => 'post_format',
            'field'    => 'slug',
            'terms'    => array( 'post-format-quote' ),
        ),
    ),
);
$query = new WP_Query( $args );

С учетом всего вышесказанного ваш код должен выглядеть примерно так:

  $cat = $_GET['cat'];
    $cat = sanitize_text_field($cat);

    $args = array(
        'post_type' => array('post', 'quizzes'),
        'posts_per_page' => -1,
        'category__not_in' => array( 9, 10 ),
        'tax_query' => array(
            'relation' => 'OR',
            array(
                'taxonomy' => 'category_name',
                'field'    => 'slug',
                'terms'    => array($cat)
            ),
            array(
                'taxonomy' => 'quiz_category',
                'field'    => 'slug',
                'terms'    => array($cat)
            ),
        )
    );

Если это не сработает, вы можете отобразить переменную $cat и опубликовать результат?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...