Если на сайте не нужны RSS-ленты, их лучше отключать аккуратно: не просто прятать ссылки из шаблона, а закрывать сами точки входа и отдельно решить, что делать с подпиской на записи и комментарии. Иначе в индексе останутся старые URL, а пользователи будут получать пустые или битые ленты.
Когда RSS действительно стоит отключать
Обычно это нужно на корпоративных сайтах, лендингах, проектах с закрытым контентом или там, где ленты уже не используются, но WordPress продолжает отдавать их по умолчанию. Частая ошибка — убрать иконку RSS из темы и считать задачу решённой. На практике URL вида /feed/, /comments/feed/, /category/.../feed/ и похожие продолжают работать.
Что именно отключаем
- главную RSS-ленту сайта;
- ленты записей, рубрик, меток и архивов;
- ленты комментариев, если они не нужны;
- ссылки на RSS в
<head>и в шаблоне темы; - при необходимости — редирект старых URL на 404 или на главную.
Диагностика: какие RSS-адреса сейчас открыты
Перед правками проверьте, что реально отдаёт сайт. У WordPress есть несколько стандартных точек входа, и они могут быть доступны даже если вы не используете их в дизайне.
https://example.com/feed/
https://example.com/comments/feed/
https://example.com/category/news/feed/
https://example.com/tag/wordpress/feed/Если в ответе браузер показывает XML с записями, лента жива. Если вы видите 404, редирект или пустую страницу — часть работы уже сделана темой, плагином или серверными правилами.
Для быстрой проверки удобно открыть URL в браузере и посмотреть заголовки ответа через DevTools или curl:
curl -I https://example.com/feed/Нужный результат после отключения — не XML-лента, а контролируемый ответ: 404, 410 или редирект на выбранную страницу. Какой вариант выбрать, зависит от того, хотите ли вы полностью убрать URL из обхода или мягко перенаправить старые обращения.
Пошаговое решение без лишних побочных эффектов
Вариант 1. Отключить RSS кодом в теме или mu-plugin
Если нужен предсказуемый результат без лишних плагинов, проще всего добавить небольшой код в functions.php дочерней темы или в отдельный mu-plugin. Этот вариант хорош тем, что вы контролируете и сами ленты, и ссылки на них в HTML.
<?php
// Отключаем стандартные RSS/Atom-ленты WordPress.
function wp5_disable_feeds() {
wp_die(
esc_html__( 'RSS-ленты на этом сайте отключены.', 'textdomain' ),
esc_html__( 'Feed disabled', 'textdomain' ),
array( 'response' => 404 )
);
}
add_action( 'do_feed', 'wp5_disable_feeds', 1 );
add_action( 'do_feed_rdf', 'wp5_disable_feeds', 1 );
add_action( 'do_feed_rss', 'wp5_disable_feeds', 1 );
add_action( 'do_feed_rss2', 'wp5_disable_feeds', 1 );
add_action( 'do_feed_atom', 'wp5_disable_feeds', 1 );
add_action( 'do_feed_rss2_comments', 'wp5_disable_feeds', 1 );
add_action( 'do_feed_atom_comments', 'wp5_disable_feeds', 1 );Этот код не ломает админку и не трогает обычные страницы. Он только перехватывает запросы к feed-эндпоинтам и отдаёт 404. Если вам нужен не 404, а 410, можно заменить wp_die() на собственный вывод с соответствующим кодом ответа, но 404 для большинства сайтов достаточно.
Вариант 2. Убрать ссылки на RSS из <head>
Даже после отключения самих лент WordPress может продолжать печатать ссылки на них в <head>. Это не критично, но создаёт шум и вводит в заблуждение. Убираются они отдельными хуками.
<?php
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'feed_links_extra', 3 );Если тема выводит RSS-иконки вручную, их тоже нужно убрать в шаблонах. Иначе пользователь увидит ссылку, которая ведёт в 404, даже если сам WordPress уже не отдаёт ленту.
Вариант 3. Оставить ленты, но закрыть их от индексации
Иногда RSS нужен для внешних сервисов или старых подписчиков, но не нужен в поиске. Тогда лучше не отключать его полностью, а оставить доступным и закрыть от индексации на уровне заголовков или robots.txt. Это уже другой сценарий: лента работает, но не должна участвовать в SEO.
Если ваша задача именно убрать RSS как функциональность, а не просто скрыть его от поисковиков, этот вариант не подходит.
Сравнение подходов
| Подход | Что делает | Плюсы | Минусы |
|---|---|---|---|
| Код в теме / mu-plugin | Отключает feed-эндпоинты и ссылки | Контроль, без лишних плагинов | Нужно не забыть про дочернюю тему или mu-plugin |
| Плагин для чистки WordPress | Убирает часть служебных ссылок и функций | Быстро для типовых сайтов | Не всегда закрывает все feed-URL |
| Только robots.txt | Запрещает обход | Просто | Не отключает саму ленту и не убирает старые URL из доступа |
Если нужен именно технически чистый результат, код обычно надёжнее. Плагины удобны, когда вы уже используете их для общей чистки сайта. Например, в Clearfy Pro есть набор функций для удаления лишнего мусора и служебных элементов WordPress, но даже в таком случае полезно проверить, какие именно feed-адреса он закрывает на вашем сайте.
Проверка результата после внедрения
После правок проверьте не только главную ленту, но и несколько типовых URL. Иначе можно случайно закрыть только /feed/, а ленты рубрик и комментариев оставить доступными.
- откройте
/feed/и убедитесь, что XML больше не отдаётся; - проверьте
/comments/feed/; - проверьте ленту рубрики или метки;
- посмотрите исходный код страницы и убедитесь, что ссылки на RSS исчезли из
<head>; - если есть кэш, очистите его и повторите проверку в инкогнито.
Для серверной проверки удобно использовать заголовки ответа:
curl -I https://example.com/feed/
curl -I https://example.com/comments/feed/Если вы оставили 404, в ответе должен быть соответствующий статус. Если настроили редирект, проверьте, что он ведёт именно туда, куда вы планировали, и не создаёт цепочку из нескольких переходов.
Частые ошибки и как их исправить
Отключили только ссылки, но не сами ленты
Это самая частая ситуация. Визуально RSS исчезает из шапки, но URL по-прежнему открываются. Исправление простое: добавьте перехват do_feed и связанных хуков, а не ограничивайтесь remove_action для wp_head.
Сломали подписку, которая реально использовалась
Иногда RSS подключён к рассылке, агрегатору или внутреннему сервису. Перед отключением проверьте, нет ли внешних интеграций. Если они есть, лучше не рубить ленту полностью, а оставить её доступной и закрыть только от индексации.
Забыли про кэш
После изменения кода старые XML-ответы могут продолжать отдаваться из page cache или CDN. Очистите кэш плагина, серверный кэш и CDN, затем повторите запросы напрямую.
Редирект ведёт на главную без логики
Редирект на главную кажется удобным, но для старых feed-URL это часто плохой вариант: пользователь и бот получают нерелевантную страницу, а цепочка URL становится нечистой. Если ленты больше не нужны, 404 обычно честнее и понятнее.
Что учесть по безопасности и производительности
Отключение RSS само по себе не даёт серьёзного ускорения, но убирает лишние точки входа и уменьшает количество бесполезных запросов. На больших сайтах это полезно в связке с общей чисткой WordPress: удалением лишних эмодзи, oEmbed, неиспользуемых архивов и служебных ссылок.
Если вы вносите код вручную, лучше делать это в mu-plugin, а не в основной теме. Тогда отключение не пропадёт после смены дизайна. Для сайтов с несколькими редакторами полезно хранить такие технические правки отдельно от визуальной части.
<?php
/**
* Plugin Name: WP5 Disable Feeds
*/
add_action( 'do_feed', 'wp5_disable_feeds', 1 );
add_action( 'do_feed_rdf', 'wp5_disable_feeds', 1 );
add_action( 'do_feed_rss', 'wp5_disable_feeds', 1 );
add_action( 'do_feed_rss2', 'wp5_disable_feeds', 1 );
add_action( 'do_feed_atom', 'wp5_disable_feeds', 1 );
add_action( 'do_feed_rss2_comments', 'wp5_disable_feeds', 1 );
add_action( 'do_feed_atom_comments', 'wp5_disable_feeds', 1 );
function wp5_disable_feeds() {
wp_die( esc_html__( 'RSS-ленты отключены.', 'textdomain' ), '', array( 'response' => 404 ) );
}Если вам нужна более широкая чистка служебных функций WordPress, имеет смысл смотреть в сторону инструментов, которые умеют убирать не только RSS, но и другие лишние элементы. Но даже в этом случае проверяйте результат руками: в WordPress слишком много зависит от темы, кэша и сторонних плагинов.