Запрашивать сообщения из двух форматов сообщений в категории
Я читал Кодекс 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 );
Кто-нибудь знает какой-нибудь обходной путь или способ взломать это? Возможно, я просто неправильно думаю.
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 );