Архивы по датам в WordPress часто остаются включёнными «по умолчанию», хотя на реальном сайте они редко дают ценность поиску. В результате появляются страницы вида /2024/05/, /2024/ и похожие URL, которые дублируют ленту записей и размывают внутреннюю перелинковку. Если задача не в том, чтобы вести новостной архив по месяцам, такие страницы обычно проще убрать из публичного доступа и из индексации.
Ниже — рабочая схема: как понять, что именно у вас создаёт архивы дат, как отключить их без поломки сайта, чем отличается редирект от noindex, и как проверить, что после правки не осталось мусорных URL.
Когда архивы дат действительно мешают
Проблема не в самом факте существования архива, а в том, что он начинает конкурировать с основными страницами сайта. Это особенно заметно, если:
- на сайте мало записей, и архив месяца почти пустой;
- записи уже есть в рубриках, тегах и на главной, а архив дат ничего нового не добавляет;
- в индексе появляются десятки URL с одинаковыми сниппетами и очень похожим контентом;
- внутренние ссылки ведут и на записи, и на архивы, хотя архивы не нужны пользователю;
- в шаблоне темы есть ссылки на архивы дат в блоках «опубликовано» или в хлебных крошках.
Если у вас новостной проект, журнал или сайт, где дата — важный способ навигации, отключать такие архивы не стоит. Но для корпоративного сайта, блога с evergreen-контентом или контентного проекта без привязки к календарю это обычно лишний слой страниц.
Диагностика: откуда берутся архивы дат
Сначала проверьте, что именно открывается у вас на сайте. В WordPress архивы дат могут появляться из нескольких мест: из стандартных шаблонов темы, из виджетов, из хлебных крошек, из SEO-плагина или из ручных ссылок в контенте.
Быстрая проверка в браузере и в коде страницы
Откройте несколько URL вручную:
/2024/;/2024/05/;/2024/05/15/.
Если страницы открываются и отдают код 200, значит архивы доступны. Дальше посмотрите исходный код страницы и найдите ссылки на них. Часто они сидят в блоке метаданных записи или в сайдбаре.
Если есть доступ к консоли, можно быстро проверить заголовок ответа:
curl -I https://example.com/2024/05/Важный момент: если архивы уже попали в индекс, одного скрытия в шаблоне мало. Нужно либо отдать noindex, либо закрыть страницу редиректом на более подходящий раздел, либо убрать сам маршрут на уровне темы/плагина.
Как отключить архив дат: три рабочих подхода
Универсального варианта нет. Выбор зависит от того, хотите ли вы сохранить URL для старых ссылок, или архивы вообще не нужны.
| Способ | Что делает | Когда использовать | Компромисс |
|---|---|---|---|
| Редирект 301 | Перенаправляет архивы на главную или рубрику | Если архивы точно не нужны и уже есть внешние ссылки | Нужно аккуратно выбрать целевую страницу |
noindex | Оставляет страницу доступной, но просит не индексировать | Если архив нужен для пользователей, но не для поиска | URL остаётся доступным и может сканироваться |
| Удаление маршрута/ссылок | Убирает ссылки и доступ из темы | Если архивы нигде не используются | Старые URL могут остаться в индексе до переобхода |
Вариант 1: редирект архивов дат через functions.php
Если архивы дат вам не нужны вообще, можно перенаправить их на главную или на страницу блога. Для этого используйте is_date() и wp_redirect(). Код лучше добавлять в дочернюю тему или в небольшой mu-plugin, а не в основной файл темы.
add_action( 'template_redirect', function () {
if ( is_date() ) {
wp_redirect( home_url( '/' ), 301 );
exit;
}
} );Если у вас есть отдельная страница записей, логичнее вести туда:
add_action( 'template_redirect', function () {
if ( is_date() ) {
$posts_page_id = (int) get_option( 'page_for_posts' );
$target = $posts_page_id ? get_permalink( $posts_page_id ) : home_url( '/' );
wp_redirect( $target, 301 );
exit;
}
} );Такой вариант хорош тем, что не оставляет мусорных URL в обходе пользователей. Но если на архивы уже есть внешние ссылки, редирект должен вести на максимально близкую по смыслу страницу, а не просто на главную.
Вариант 2: оставить страницу, но закрыть от индексации
Если архив по датам нужен как навигация для посетителей, но не нужен в поиске, лучше не ломать URL, а поставить noindex. Это можно сделать через SEO-плагин, если он умеет управлять мета-роботами для архивов, или через код.
Для WordPress-подхода через фильтр wp_robots можно добавить noindex на архивы дат:
add_filter( 'wp_robots', function ( $robots ) {
if ( is_date() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Это не удаляет страницу из обхода сразу, но даёт поисковику понятный сигнал. Такой способ полезен, если вы не хотите терять архив как пользовательскую навигацию, но не хотите видеть его в выдаче.
Вариант 3: убрать ссылки и шаблон архива дат
Иногда проблема не в индексации, а в том, что тема активно генерирует ссылки на даты. Тогда стоит проверить шаблоны записи, сайдбар, хлебные крошки и блоки метаданных. Например, в шаблоне записи можно убрать вывод даты как ссылки на архив:
<?php
$time_string = '<time class="entry-date published" datetime="' . esc_attr( get_the_date( DATE_W3C ) ) . '">' . esc_html( get_the_date() ) . '</time>';
echo $time_string;
?>Здесь дата остаётся на странице, но не ведёт на архив. Это полезно, если вы хотите сохранить информацию о публикации, но не плодить переходы на календарные страницы.
Пошаговое решение без лишнего риска
- Определите, нужен ли архив пользователю. Если нет — выбирайте 301-редирект. Если нужен — оставляйте URL, но ставьте
noindex. - Проверьте тему. Найдите в шаблонах ссылки на
get_day_link(),get_month_link()и похожие функции. - Выберите один способ, а не несколько сразу. Не ставьте одновременно редирект,
noindexи удаление ссылок без понимания, что вы тестируете. - Сделайте правку в дочерней теме или mu-plugin. Так обновление темы не затрёт изменения.
- Очистите кеш. Если стоит серверный кеш, плагин кеширования или CDN, старые страницы могут продолжать отдаваться ещё какое-то время.
- Проверьте ответ сервера и мета-роботы. Убедитесь, что архивы либо отдают 301, либо содержат
noindex.
Как проверить, что всё сработало
После внедрения не ограничивайтесь визуальной проверкой в браузере. Нужны три уровня проверки: HTTP-ответ, HTML и индексация.
Проверка HTTP-ответа
Если вы ставили редирект, архив должен отдавать 301, а не 200:
curl -I https://example.com/2024/05/В ответе ищите строку HTTP/2 301 или HTTP/1.1 301 Moved Permanently и заголовок Location с нужным адресом.
Проверка мета-роботов
Если вы использовали noindex, откройте исходный код страницы и найдите robots-мета или заголовок, который добавляет SEO-плагин. На странице не должно быть конфликтующих указаний вроде noindex в одном месте и index в другом.
Проверка в поисковой системе
После переобхода в панели вебмастера проверьте, что архивы дат уходят из индекса или перестают появляться как отдельные страницы. Это не мгновенный процесс: если URL уже был в выдаче, поисковику нужно время, чтобы переоценить его статус.
Частые ошибки и как их исправить
- Ставят 301 на главную для всех архивов без разбора. Если на архивы есть внешние ссылки, лучше вести на близкую по смыслу страницу, а не на общий вход.
- Оставляют архивы открытыми и надеются, что поисковик сам их проигнорирует. Обычно это не работает: URL продолжает сканироваться и может попадать в индекс.
- Добавляют
noindex, но не убирают ссылки из темы. В итоге бот всё равно тратит обход на ненужные страницы. - Правят шаблон в родительской теме. После обновления изменения исчезают.
- Не чистят кеш. Пользователь и бот продолжают видеть старую версию страницы, хотя код уже поменяли.
- Путают архив дат с архивом записей. Если у сайта есть отдельная страница блога, её трогать не нужно.
Что делать, если архив дат нужен только для части сайта
Иногда полностью отключать архивы не хочется: например, на сайте есть раздел новостей, где дата важна, а остальные материалы лучше не привязывать к календарю. В таком случае не отключайте всё подряд. Проще ограничить вывод ссылок только в нужном шаблоне или для конкретного типа записей.
Если у вас кастомный тип записей, проверьте, не создаёт ли он собственные архивы по датам через стандартный вывод метаданных. Часто достаточно убрать ссылку с даты и оставить сам текст даты без перехода.
Практика по безопасности и производительности
Любая правка в functions.php должна быть минимальной и обратимой. Для таких задач удобнее небольшой mu-plugin: он не зависит от темы и не исчезает после обновления. Если на сайте есть кеширование, после изменений обязательно сбросьте кеш страницы, объектный кеш и CDN, если он используется.
Если вы работаете через SEO-плагин, не включайте несколько механизмов одновременно без необходимости. Например, редирект на уровне PHP и отдельное правило в плагине могут конфликтовать и давать петлю или неожиданный ответ сервера. Сначала выберите один способ, потом проверьте его в браузере и через curl.
Если нужен готовый набор для чистки технических дублей и лишних элементов WordPress, имеет смысл смотреть в сторону инструментов вроде Clearfy Pro: у него как раз есть задачи по удалению дублей и технической оптимизации сайта, но даже в этом случае логику редиректов и индексации лучше перепроверять вручную.
Короткий чек-лист перед публикацией правки
- архивы дат действительно не нужны пользователям;
- выбрано одно решение: 301,
noindexили удаление ссылок; - правка внесена в дочернюю тему или mu-plugin;
- кеш очищен на всех уровнях;
- URL архивов проверены через
curl -Iили аналогичный инструмент; - в исходном коде нет конфликтующих указаний для роботов;
- внутренние ссылки на даты убраны или оставлены осознанно.
Если после этого архивы всё ещё появляются в поиске, проблема обычно не в WordPress как таковом, а в том, что где-то осталась старая ссылка, кеш или конфликтующее правило индексации. В таких случаях проще идти от ответа сервера и исходного кода, чем искать причину только в админке.
}