Flector

Как отключить все архивы на сайте кроме «Рубрик» и «Меток»?

Пример архива за месяц

Я уже писал о том, как запретить движку генерировать архивы по авторам. Однако, проблема не только в них, так как WordPress по умолчанию генерирует и другие архивы, которые доступны при открытии прямой ссылки. И в отличие от архивов авторов запретить через robots.txt индексацию архивов по месяцам может быть затруднительно (так как люди часто используют в ярлыках записей указание года). Поэтому лучше всего сразу закрыть абсолютно все архивы кроме рубрик и меток. Для этого вам необходимо добавить в файл functions.php вашей темы следующий код:

//отключение всех архивов кроме рубрик и меток start
function wph_disable_all_archives($false) {
    if (is_archive() and !is_category() and !is_tag()) {
        global $wp_query;
        $wp_query->set_404();
        status_header( 404 );
        nocache_headers();
        return true;
    }
    return $false;
}
//удаление ссылки на архив автора
function wph_remove_author_link($content) {return home_url();}
 
add_action('pre_handle_404', 'wph_disable_all_archives');
add_filter('author_link', 'wph_remove_author_link');
//отключение всех архивов кроме рубрик и меток end

Будьте внимательны, так как этот код запретит все архивы кроме рубрик и меток (будут запрещены архивы по авторам, архивы по дате, архивы произвольных типов записей и архивы произвольных таксономий). Чтобы в индекс поисковиков не попадали страницы с ошибкой 404 вам надо использовать дополнительный код:

//запрет индексирования страниц с ошибкой 404 start
function wph_noindex_for_404() {
    if( is_404() ) {
        echo '<meta name="robots" content="noindex, follow" />'.PHP_EOL;
    }
}
add_action('wp_head', 'wph_noindex_for_404');
//запрет индексирования страниц с ошибкой 404 end

Конечно, наилучшим (и куда более простым) вариантом будет воспользоваться каким-нибудь SEO-плагином, но SEO-плагины не отключают генерацию архивов, а только запрещают их индексацию.


Комментарии (1 комментарий)
  1. Код очень хороший! Но очень жаль, что конфликтует с форумом bbpress, пришлось отключить.

Написать комментарий

Для вставки кода воспользуйтесь кнопкой "Код". Используйте предпросмотр!