Бывает, что необходимо вывести записи (wp_query) на WordPress исключая конкретные категории или теги. Как это сделать расскажу в этой заметке.
Особенно часто возникает задача по исключению записей из конкретных категорий и тегов, когда нужно вывести WP_QUERY несколько раз на одной странице. Для того, чтобы исключить дубли уже выведенных записей, мы уберём их из вывода.
За исключение записей из категорий отвечает:
'category__not_in' => array(130, 310),
Исключить теги можно так:
'tag__not_in' => array(141, 153, 155, 292, 311, 313),
Окончательный вид вывода может быть таким:
$paged = get_query_var( 'paged', 1 );
$args = array(
'category__not_in' => array(130, 310),
'tag__not_in' => array(141, 153, 155, 292, 311, 313),
'post_type' => 'post',
'orderby' => 'date', // Сортируем все записи по дате
'order' => 'DESC', // От большего к меньшему
'paged' => $paged, // Нужен для правильной работы пангинации
'posts_per_page' => '3',
);
// Полоностью перезаписываем параметры
global $wp_query;
query_posts( $args );
if ( have_posts() ) : while ( have_posts() ) : the_post();
get_template_part( '/archive/article' ); // здесь вывод записей
endwhile;
else :
endif;
wp_reset_query(); // Сбрасываем, чтобы количество страниц не увеличилось и не создались страницы без записей. Если этого не сделать, количество страниц увеличится из-за разбиения на 3 записи. И если на второй странице вывод записей больше 3-х, то на первой странице появятся ссылки на не рабочие страницы.
$args = array(
'category__not_in' => array(130, 310),
'tag__not_in' => array(141, 153, 155, 292, 311, 313),
'post_type' => 'post',
'orderby' => 'date', // Сортируем все записи по дате
'order' => 'DESC', // От большего к меньшему
'paged' => $paged, // Нужен для правильной работы пангинации
'posts_per_page' => '3',
);
// Полоностью перезаписываем параметры
global $wp_query;
query_posts( $args );
if ( have_posts() ) : while ( have_posts() ) : the_post();
get_template_part( '/archive/article' ); // здесь вывод записей
endwhile;
else :
endif;
wp_reset_query(); // Сбрасываем, чтобы количество страниц не увеличилось и не создались страницы без записей. Если этого не сделать, количество страниц увеличится из-за разбиения на 3 записи. И если на второй странице вывод записей больше 3-х, то на первой странице появятся ссылки на не рабочие страницы.