Intereting Posts
Условные обозначения таксономического тега Как ограничить количество определенного продукта WooCommerce на основе общей суммы телеграммы? Получение списка элементов меню в массиве Walker_Nav_Menu не работает в wp_page_menu_args filter wp_get_attachment_image_src всегда возвращает полноразмерное изображение Как создать пользовательскую страницу edit.php / edit pages Скрыть содержимое и функции из определенных пользовательских ролей <! – nextpage -> предполагается как строка комментария Почему я не могу редактировать определенные изображения из библиотеки WordPress Media? Отключить добавление нового сообщения (пользовательский тип сообщения) См. Некоторые статистические данные о комментариях Ajaxurl внезапно не определился Ввод содержимого в header.php без использования wp_head Следующие сообщения Предыдущие сообщения только для стандартного почтового формата Предложения: Настраиваемые изображения заголовков и цвета стиля, которые различны для каждой страницы

WP_Query с различным фильтром postmeta для каждой категории

Предположим, у меня есть категории (cat1, cat2), и у меня есть клавиши postmeta (date1, date2, status).

Как просмотреть все сообщения во всех категориях с помощью этих фильтров:

  • Для cat1 я хочу применить WHERE date2 <= $today .
  • Для cat2 я хочу применить WHERE status=1 .

Как применить $args для WP_Query ?

Solutions Collecting From Web of "WP_Query с различным фильтром postmeta для каждой категории"

Я не думаю, что есть простой способ сделать это с помощью одного запроса. WP_Query очень хорошо разбирается в таксономических запросах , даже делая такие вещи, как вложенные сравнения и пользовательские полевые запросы . В вашем случае вы пытаетесь ограничить сообщения, возвращаемые мета-запросом, когда другое условие истинно. Если вы пойдете и возьмете только идентификаторы из первых двух запросов, вы можете запустить третий запрос, который очень дешев, чтобы вернуть весь результат с идеальным форматированием для цикла.

Сначала запустите первый мета-и налоговый запрос.

 <?php $today = date(); $args1 = array( 'fields' => 'ids', 'tax_query' => array( array( 'taxonomy' => 'category', 'field' => 'slug', 'terms' => 'cat1', ), ), 'meta_query' => array( array( 'key' => 'date2', 'value' => $today, 'compare' => '>=', ), ), ); $query1 = new WP_Query( $args1 ); 

Затем запустите второй мета-и налоговый запрос.

 $args2 = array( 'fields' => 'ids', 'tax_query' => array( array( 'taxonomy' => 'category', 'field' => 'slug', 'terms' => 'cat2', ), ), 'meta_query' => array( array( 'key' => 'status', 'value' => 1, 'compare' => '=', ), ), ); $query2 = new WP_Query( $args2 ); 

Наконец, объедините два результата и запустите третий запрос только для идентификаторов получаемого сообщения.

 $all_IDs = array_merge( $query1->posts, $query2->posts ); $final_query = new WP_Query( array( 'post__in' => $all_IDs ) ); 

h / t Ответ Bora Yalcin для комбинации запросов