Поддержка Проблемы и решения Как исключить рубрику из wp_get_archives

  • Вопрос избитый, нашел решения только через БД и то — не пробовал еще их работоспособность, может кто подскажет как в списке архива исключить записи определенной категории?

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Возможно, окажется полезным такой вариант

    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 строка)

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Тема «Как исключить рубрику из wp_get_archives» закрыта для новых ответов.