wordpress 3.x Как не выводить рубрики на главной. Решение

picИногда удобно не выводить на главной своего блога некоторые рубрики. К примеру профильное направление в этом блоге – компьютеры и прочее для начинающих. С другой стороны иногда хочется поделиться и чем-нибудь из другой тематики. Раньше это было просто, но, начиная с версии 3.x перестало работать.

Для того, что бы опять спрятать некоторые рубрики с главной, надо сделать следующее.

Заходим в директорию текущей темы. Например,
/domains/ваш_домен/public_html/wp-content/themes/default/
и ищем там файл functions.php

Редактируем его добавляя следующие строки:

function exclude_category($query) {
if ( $query->is_feed or $query->is_home ) {
$query->set('category__not_in', array(8,52,59,60,72,74));}
return $query;
}
add_filter('pre_get_posts', 'exclude_category');

Таким образом ни в rss ни на главную посты с этими рубриками не попадут.

Если в rss они должны попасть, а на главную – нет, код будет вот таким:

function exclude_category($query) {
if ( $query->is_home ) {
$query->set('category__not_in', array(8,52,59,60,72,74));}
return $query;
}
add_filter('pre_get_posts', 'exclude_category');

Как узнать номера категорий? У меня они 8,52,59,60,72,74

Очень просто. Идём вот по такой ссылке: http://ваш_блог/wp-admin/edit-tags.php?taxonomy=category
logo

Наводим мышь на категорию (рубрику) и смотрим в статусной строке номерок. В случае примера это 74.

Или заходим в управление рубриками, и кликаем на “изменить”. Вверху в адресной строке, вы найдёте необходимую вам цифру.

Т.е. если я напишу код вот так:

function exclude_category($query) {
if ( $query->is_feed or $query->is_home ) {
$query->set('category__not_in', array(74));}
return $query;
}
add_filter('pre_get_posts', 'exclude_category');

то ни один пост с рубрикой “Мои Разработки” не попадёт ни на главную страницу ни в rss.

Если есть вопросы – спрашивайте.

UPD: Еще вариант:

function removeFromHome($query) {
if ($query->is_feed || ($query->is_home && !(is_paged()))) 
	{$query->set('cat','-8,-52,-59,-60,-72,-74');}
return $query; }
add_filter('pre_get_posts','removeFromHome');