Архивы по датам в WordPress часто живут своей жизнью: страницы /2024/05/, /2024/05/12/ и похожие URL появляются автоматически, даже если вы их не используете как отдельный контентный слой. Проблема не в самих архивах, а в том, что они могут создавать тонкие страницы, дублировать логику рубрик и размывать обход поисковыми роботами. Если на сайте нет редакционного смысла в таких архивах, их обычно проще отключить или закрыть от индексации.
Когда архивы по датам действительно мешают
Сначала стоит понять, что именно у вас индексируется и зачем. Архивы по датам полезны только в нескольких сценариях: новостной сайт, журнал с хронологической навигацией, проект, где пользователи реально ищут материалы по дням или месяцам. Во всех остальных случаях это часто лишние URL без самостоятельной ценности.
Типичные признаки проблемы:
- в поиске появляются страницы дат вместо рубрик или записей;
- в отчётах краулинга много URL с одинаковыми заголовками и короткими списками записей;
- архивы доступны по нескольким форматам, например по месяцу и по дню, хотя нужен только один;
- на сайте есть пагинация архивов, но она не даёт дополнительной пользы пользователю;
- робот тратит время на обход страниц, которые не должны ранжироваться.
Диагностика: что именно отключать
Перед правкой кода проверьте, как архивы устроены у вас сейчас. В WordPress они могут быть доступны через настройки постоянных ссылок, через тему, через SEO-плагин или через кастомные правила перезаписи. Не стоит сразу удалять всё подряд: иногда достаточно убрать только архивы по дням, оставив месячные страницы, если они реально нужны.
Проверьте адреса и шаблоны
Откройте несколько URL вручную и посмотрите, что они отдают: список записей, пустую страницу, редирект или 404. Затем проверьте исходный код и мета-теги. Если на архиве есть noindex, это ещё не значит, что URL не нужно отключать: страница всё равно будет обходиться и может оставаться в индексе как URL без контента.
Сравните варианты решения
| Подход | Когда подходит | Минус |
|---|---|---|
| Закрыть от индексации | Если архив нужен пользователям, но не нужен в поиске | URL остаётся доступным и продолжает обходиться |
| Сделать редирект на рубрику или главную | Если архив не нужен вообще | Нужно аккуратно выбрать целевой URL, чтобы не потерять смысл |
| Удалить через код и отдавать 404/410 | Если архивы точно не должны существовать | Нужно проверить, что не ломаются внутренние ссылки и хлебные крошки |
Пошаговое решение: отключаем архивы по датам через код
Если задача именно убрать архивы по датам из публичного доступа, самый надёжный путь — отключить их на уровне WordPress. Это лучше, чем просто прятать их мета-тегом noindex. Код можно добавить в дочернюю тему или в небольшой mu-plugin.
Вариант 1: отключить архивы и отдавать 404
Этот вариант подходит, если архивы по датам не нужны вообще. WordPress перестанет строить такие страницы, а посетитель и робот получат корректный ответ об отсутствии страницы.
<?php
/**
* Plugin Name: Disable Date Archives
*/
add_action('template_redirect', function () {
if (is_date()) {
global $wp_query;
$wp_query->set_404();
status_header(404);
nocache_headers();
include get_query_template('404');
exit;
}
});
Этот код не удаляет сами правила перезаписи, но блокирует вывод архивов по дате на фронтенде. Если у вас есть SEO-плагин, проверьте, не добавляет ли он для этих URL отдельные канонические теги или хлебные крошки, которые будут указывать на несуществующие страницы.
Вариант 2: сделать редирект на рубрику или главную
Если архивы по датам уже где-то проиндексированы и вы хотите мягко вывести их из обращения, можно настроить 301-редирект. Но редирект должен быть логичным. Например, архив месяца новостей можно отправить на соответствующую рубрику, а не на главную без контекста.
<?php
add_action('template_redirect', function () {
if (!is_date()) {
return;
}
$target = home_url('/news/');
wp_safe_redirect($target, 301);
exit;
});
Не делайте цепочки редиректов вида архив даты → главная → рубрика. Один шаг лучше двух. Если архивов много, сначала соберите список URL из логов сервера или отчёта краулинга и проверьте, нет ли среди них страниц, которые уже дают 404.
Вариант 3: закрыть только от индексации
Если архивы нужны для навигации, но не должны ранжироваться, можно оставить их доступными и добавить noindex,follow. Это компромиссный вариант, но он не решает проблему лишнего обхода полностью. Используйте его только тогда, когда у архивов есть реальная пользовательская ценность.
Если вы используете SEO-плагин, настройка обычно делается в его интерфейсе. Смысл один: не прятать архивы «на глаз», а явно указать поисковым системам, что эти страницы не являются посадочными.
Что проверить после внедрения
После изменений не ограничивайтесь открытием страницы в браузере. Нужно проверить ответ сервера, заголовки и поведение робота. Это особенно важно, если вы меняли шаблон через template_redirect или редирект на уровне PHP.
- Откройте несколько URL архивов по дате и убедитесь, что они дают 404 или 301 в зависимости от выбранного сценария.
- Проверьте заголовки ответа через DevTools,
curl -Iили любой HTTP-клиент. - Посмотрите, не осталось ли внутренних ссылок на архивы в меню, хлебных крошках, сайдбаре и футере.
- Проверьте XML-карту сайта: архивные URL не должны туда попадать, если вы их отключили.
- Сравните отчёт краулинга до и после: число обходов лишних архивов должно снижаться.
Пример быстрой проверки через консоль:
curl -I https://example.com/2024/05/
Если вы ожидаете 404, в ответе должен быть соответствующий статус. Если настроен редирект, проверьте, что он ведёт сразу на нужный адрес и без промежуточных переходов.
Частые ошибки и как их исправить
Самая распространённая ошибка — поставить noindex и считать задачу решённой. Для поисковика это не всегда конец истории: URL может продолжать обходиться, а в индексе оставаться как слабая страница с внешними или внутренними ссылками.
Ошибка: редирект на главную для всех архивов
Такой подход часто ухудшает поведение пользователей и может выглядеть как мягкая ошибка вместо логичного перехода. Если архив был связан с конкретной темой, лучше направить его на релевантную рубрику или запись-обзор.
Ошибка: отключили архивы, но оставили ссылки в теме
В этом случае пользователь кликает по несуществующей странице, а робот продолжает ходить по старым URL из внутренних ссылок. После отключения архивов проверьте шаблоны темы, виджеты и меню. Иногда ссылка на архив даты сидит в блоке «Последние записи» или в кастомном хлебном крошке.
Ошибка: сломали архивы автора и рубрики вместе с датами
Если вы используете общий фильтр is_archive(), можно случайно задеть не только даты, но и рубрики, теги, авторов. Для точечной правки используйте именно is_date(). Это важно, если на сайте архивы рубрик нужны для SEO и навигации.
Практические советы по безопасности и производительности
Если вы вносите код вручную, не правьте напрямую functions.php активной темы на боевом сайте. Лучше использовать дочернюю тему или отдельный mu-plugin, чтобы изменения не потерялись после обновления. Для небольших технических правок это надёжнее и проще в сопровождении.
С точки зрения производительности отключение лишних архивов полезно ещё и потому, что уменьшает число бесполезных запросов к шаблонам и снижает шум в логах. Но не ждите от этого магического ускорения: эффект обычно заметен именно в чистоте индекса и в качестве обхода, а не в бенчмарках.
Если вам нужен более широкий набор инструментов для технической чистки WordPress, имеет смысл смотреть в сторону решений, которые помогают управлять дублями, архивами и служебными страницами, например Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже в этом случае сначала проверьте, что именно вы хотите отключить, а не включайте пакетные настройки вслепую.
Короткий чек-лист перед публикацией изменений
- Определили, нужны ли архивы по датам пользователям.
- Выбрали один сценарий: 404, 301 или noindex.
- Проверили, что код затрагивает только
is_date(). - Убрали внутренние ссылки на отключённые архивы.
- Проверили HTTP-статус и отсутствие лишних URL в sitemap.
- Сверили поведение в браузере и через
curl -I.
Если после правок архивы всё ещё появляются в поиске, обычно проблема не в одном теге, а в наборе сигналов: внутренние ссылки, старые sitemap, кэш, каноникал и внешние упоминания. В таких случаях нужно не «дожимать» одну настройку, а пройтись по всей цепочке и убрать источник URL на уровне сайта.