Intereting Posts
Как заставить substr_replace соответствовать всей строке sring После обновления до Buddypress 1.2.6 из 1.2.5.2 панель администратора неправильно отображена для гостей-гостей Как добавить custiomized javascipt в шаблон Как я могу добавить пользовательские изображения заголовков для каждой категории? Отфильтровать результаты из сериализованной строки для использования в статистике Не удается удалить тему Woocommerce включает пользовательскую таблицу стилей после стилизации woocommerce Справка по гиперссылке панели на страницу категории блога Изменение сообщений на странице и смещение с помощью pre_get_posts Исключить текущий пользовательский пост в одном сообщении Параметры темы WordPress и пользовательских типов сообщений Как разрешить публикацию сообщений типа post в стандартном пост-архиве (например, на домашней странице)? Динамическое изменение навигационных ссылок (далее и далее) через AJAX как правильно перечислить дочерние страницы на боковой панели? функция родителя, не работающего в детской

Включать сообщения из некоторых категорий, исключая из других

Я не могу успешно фильтровать сообщения из некоторых категорий и одновременно исключать из других. Код работает отлично, когда используется для включения только сообщений из данной категории. Категории, которые должны быть включены, являются подкатегориями, а исключенные категории – это основные категории (они не являются родителями включенных подкатегорий)

Примеры:

1) Используйте одновременно category__in и category__not_in

 $wpid = get_category_id($_REQUEST['param']); $cat_arr = array($wpid); $args = array( 'category__in' => $cat_arr, 'category__not_in' => array(350,351), 'posts_per_page' => 10, 'post_status' => 'publish', 'suppress_filters' => 0 ); $the_query = new WP_Query( $args ); while ($the_query -> have_posts()){ . . } 

2) Используйте только category__in с отрицательными значениями:

 $wpid = get_category_id($_REQUEST['param']); $cat_arr = array($wpid); array_push($cat_arr, -350, -351); $args = array( 'category__in' => $cat_arr, 'posts_per_page' => 10, 'post_status' => 'publish', 'suppress_filters' => 0 ); $the_query = new WP_Query( $args ); while ($the_query -> have_posts()){ . . } 

Вы можете использовать таксономический запрос , например:

 $args = array( 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'category', 'terms' => array(), 'operator' => 'IN' ), array( 'taxonomy' => 'category', 'terms' => array(), 'operator' => 'NOT IN', ), ), ); $query = new WP_Query( $args ); 

Это будет запрашивать сообщения, которые находятся в первом наборе терминов И не во втором наборе.

Попробуйте этот код. Не проверено

 <?php $args = array( 'tax_query' => array( 'relation' => 'AND', // logical relationship between taxonomy arrays array( // subcategories to exclude 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => array(350, 351), 'operator' => 'NOT IN', // exclude 'post_parent' => 0 // top level only ), array( // categories to include 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => array($cat_arr), // 'include_children' => false ) ), 'posts_per_page' => 10, // more lines if needed ); 

Я отключил suppress_filters потому что это не подходит для WP_Query .

Может быть, вы захотите использовать 'include_children' => false (закомментировано в коде), если вы не хотите показывать сообщения из подкатегорий $cat_arr .