Запрашивать сообщения из двух форматов сообщений в категории


Я читал Кодекс WP_Query, ища способ просмотреть все сообщения, которые имеют формат "видео" ИЛИ "изображение" в данной категории.

Если этого было недостаточно, эта категория задается переменной $catslug (мне нужно, чтобы это было так).

Я нашел только способы зацикливания на одном из следующих

  • Изображение ИЛИ видео

  • Изображение И категория

  • Видео И категория,

Но то, что мне нужно, сложнее, что-то вроде этого:

post-format-image И $catslug) ИЛИ (post-format-video И $catslug)

Возможно ли сделать tax_query в пределах tax_query?

Что-то вроде этого:

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

Кто-нибудь знает какой-нибудь обходной путь или способ взломать это? Возможно, я просто неправильно думаю.

Author: RMajidi, 2014-10-13

1 answers

На самом деле это хороший вопрос. Простой ответ здесь заключается в том, что вы не можете использовать несколько tax_query.

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

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

Вот мой линия мысли здесь:

Поскольку вам нужны случайные результаты, я бы посоветовал вам добавить свои форматы сообщений в массив

$post_format_array = array( 'post-format-video', 'post-format-image' );

Теперь вы собираетесь использовать shuffle чтобы перетасовать массив, а затем взять первую запись из этого массива, которая будет либо видео изображения, и использовать ее в вашем tax_query.

shuffle( $post_format_array );    

Таким образом, вы получите сообщения в нужной вам категории и в формате видео или изображения.

$args = array(
    'post_type' => 'post',
    'tax_query' => array(
    'relation' => 'AND',
      array(
        'taxonomy' => 'category',
        'field'    => 'slug',
        'terms'    => $catslug,
      ),
      array(
        'taxonomy' => 'post_format',
        'field'    => 'slug',
        'terms'    => $post_format_array[0]
      ),
    ),
);
$query = new WP_Query( $args );
 1
Author: Pieter Goosen, 2014-10-13 06:02:15