Возможно, окажется полезным такой вариант
function exclude_cat_from_archive( $r ) {
$myq = new WP_Query();
$myq->parse_query( $r );
if ( $myq->is_archive() )
$r['category__not_in'] = 2; //ID исключаемой кат
return $r;
}
add_filter( 'request', 'exclude_cat_from_archive' );
Забыл, что архивами могут быть даты, метки, авторы и категории, поэтому, меняем на такой вариант
function exclude_cat_from_archive( $r ) {
$myq = new WP_Query();
$myq->parse_query( $r );
if ( $myq->is_archive && !$myq->is_category )
$r['category__not_in'] = 2; //ID исключаемой кат
return $r;
}
add_filter( 'request', 'exclude_cat_from_archive' );
Что-то не срабатывает фильтр, выводит архивы всех годов, хотя 2013 не должно быть.
Я использую для вывода:
<?php wp_get_archives( array( 'type' => 'yearly', 'limit' => 5 ) ); ?>
Вариант такой не дает результатов, выводит то же самое что и предыдущий:
<?php
function exclude_cat_from_archive( $r ) {
$myq = new WP_Query();
$myq->parse_query( $r );
if ( $myq->is_archive && !$myq->is_category )
$r['category__not_in'] = 4; //ID исключаемой кат
return $r;
}
add_filter( 'request', 'exclude_cat_from_archive' );
wp_get_archives( array( 'type' => 'yearly', 'limit' => 5 ) ); ?>
Или как сделать чтобы фильтр выполнялся?
Ага.. Я название топика не прочитал. Подумал, что речь идет об обычном шаблоне вывода архивов, код добавлял в functions.php
.
Видимо, для таких случаев разместили два фильтра, смотрите исходный код http://core.trac.wordpress.org/browser/tags/3.6/wp-includes/general-template.php#L957 (+958 строка)