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