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

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

Если этого было недостаточно, эта категория задается переменной $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 );

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

3

Решение

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

Это заставило меня быстро протестировать следующий сценарий, прежде чем я ушел на работу. Просто для удовольствия я пошел и попытался использовать параметры категории с 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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]