Если на сайте включён XML-RPC, это не значит, что его нужно полностью рубить. На практике чаще всего проблема не в самом протоколе, а в открытых pingbacks: они создают лишний шум в логах, помогают в DDoS-атаке на xmlrpc.php и иногда провоцируют спамные уведомления. При этом у части сайтов через XML-RPC всё ещё работают мобильные приложения, внешние редакторы и некоторые интеграции.
Ниже — рабочий сценарий: отключить именно pingbacks, оставить доступ для нужных методов и проверить, что сайт не потерял полезную функциональность.
Когда проблема действительно в XML-RPC pingbacks
Сначала стоит понять, что именно вы хотите убрать. Если цель — снизить нагрузку и закрыть лишний вектор атак, не всегда нужно запрещать весь XML-RPC. Pingbacks — это отдельный механизм уведомлений между сайтами. Он редко нужен в 2026 году, но всё ещё может быть включён по умолчанию в старых установках или после переноса сайта.
Типичные признаки
- в логах много запросов к
/xmlrpc.phpс методами вродеpingback.ping; - в админке появляются странные комментарии-уведомления;
- хостинг показывает всплески обращений к
xmlrpc.phpдаже при обычной посещаемости; - после включения внешнего приложения WordPress продолжает работать, но pingbacks вам не нужны.
Если у вас уже отключён XML-RPC целиком, эта статья не про это. Здесь задача тоньше: убрать только лишние методы и не сломать то, что реально используется.
Что лучше: плагин, код или серверное правило
Для такой задачи есть три подхода. Выбор зависит от того, нужен ли вам полный контроль и есть ли риск, что сторонний плагин потом начнёт мешать интеграциям.
| Подход | Плюсы | Минусы | Когда выбирать |
|---|---|---|---|
| Код в теме или MU-плагине | Точный контроль, без лишних зависимостей | Нужно аккуратно тестировать после обновлений | Если есть доступ к коду и нужен предсказуемый результат |
| Плагин безопасности | Быстро включить, часто есть готовые переключатели | Может отключить больше, чем нужно | Если нет разработчика под рукой |
| Серверное правило | Снимает часть нагрузки до PHP | Сложнее поддерживать, легко задеть легитимные запросы | Если атака идёт массово и нужен фильтр на уровне веб-сервера |
Если задача именно в pingbacks, я бы начинал с кода. Это проще проверить и откатить.
Пошаговое решение: отключаем pingbacks, оставляя XML-RPC
Самый безопасный путь — запретить конкретный метод pingback.ping. Тогда мобильное приложение или внешний редактор, если они используют другие методы XML-RPC, продолжат работать.
Вариант через фильтр xmlrpc_methods
Добавьте код в functions.php дочерней темы или, лучше, в небольшой mu-plugin. Так изменение не потеряется после обновления темы.
<?php
add_filter( 'xmlrpc_methods', function( $methods ) {
if ( isset( $methods['pingback.ping'] ) ) {
unset( $methods['pingback.ping'] );
}
if ( isset( $methods['pingback.extensions.getPingbacks'] ) ) {
unset( $methods['pingback.extensions.getPingbacks'] );
}
return $methods;
} );Этот вариант не трогает весь XML-RPC. Он убирает только методы, связанные с pingbacks. Для большинства сайтов этого достаточно.
Если нужно закрыть XML-RPC полностью
Полное отключение имеет смысл только если вы точно не используете внешние клиенты, Jetpack-совместимые сценарии или старые интеграции. Тогда можно вернуть ошибку на уровне фильтра xmlrpc_enabled.
<?php
add_filter( 'xmlrpc_enabled', '__return_false' );Но это уже более жёсткий шаг. Сначала проверьте, не зависит ли от XML-RPC мобильное приложение редактора, автоматическая публикация или сторонний сервис синхронизации.
Диагностика перед изменением
Если не хотите гадать, посмотрите, что именно приходит на xmlrpc.php. На уровне доступа к серверу это видно в access log. Ищите повторяющиеся POST-запросы к одному и тому же endpoint.
# Пример для поиска обращений к xmlrpc.php в access.log
grep 'xmlrpc.php' /var/log/nginx/access.log | tail -n 50Если у вас нет доступа к логам, проверьте хотя бы поведение сайта после временного отключения pingbacks на тестовой копии. Это надёжнее, чем менять настройки на боевом сайте вслепую.
Что проверить до внедрения
- используете ли вы мобильное приложение WordPress;
- есть ли внешняя публикация через API или старые интеграции;
- нужны ли вам pingbacks как часть внутреннего workflow;
- есть ли на сайте плагины, которые явно упоминают XML-RPC в документации.
Как проверить, что решение сработало
После внесения правки не ограничивайтесь открытием главной страницы. Нужно проверить именно тот сценарий, который вы меняли.
Проверка через браузер и ответ сервера
Откройте /xmlrpc.php в браузере. Сам по себе файл может отвечать сообщением о том, что XML-RPC сервер принимает только POST-запросы — это нормально. Важно не это, а то, что pingback-методы больше не доступны.
Если есть возможность, отправьте тестовый XML-RPC-запрос с методом pingback.ping и убедитесь, что он отклоняется. Для обычного пользователя это можно проверить и косвенно: новые pingback-уведомления перестают появляться, а внешние редакторы продолжают подключаться.
Проверка через функциональность сайта
- войдите в мобильное приложение WordPress и попробуйте открыть список записей;
- если используете внешний редактор, проверьте публикацию черновика;
- посмотрите логи сервера через 10–15 минут после изменения;
- убедитесь, что в комментариях больше не появляются pingback-уведомления.
Частые ошибки и как их исправить
Отключили XML-RPC целиком, хотя нужен был только pingbacks
Это самая частая ошибка. После add_filter( 'xmlrpc_enabled', '__return_false' ); перестают работать и полезные интеграции. Если это уже произошло, откатите полный запрет и оставьте только удаление методов pingback через xmlrpc_methods.
Добавили код в родительскую тему
После обновления темы изменение пропадёт. Для таких правок используйте дочернюю тему или mu-plugin. Это не косметика, а вопрос поддержки.
Проверили только главную страницу
Главная может открываться идеально, а внешнее приложение — нет. Проверяйте именно тот канал, который потенциально использует XML-RPC. Иначе вы узнаете о проблеме уже от пользователя или из ошибок авторизации.
Смешали задачу с защитой от брутфорса
Отключение pingbacks не равно защите от подбора паролей. Если цель — снизить риск атак, иногда нужно дополнительно ограничить доступ к xmlrpc.php на уровне WAF, fail2ban или правил веб-сервера. Но делать это стоит отдельно, чтобы не сломать нужные методы.
Практические советы по безопасности и производительности
Если на сайте много мусорных обращений к XML-RPC, полезно смотреть не только на WordPress-код, но и на инфраструктуру. Иногда нагрузка уходит не из-за самого метода, а из-за того, что сервер честно обрабатывает слишком много бессмысленных запросов.
- держите WordPress, плагины и тему в актуальном состоянии;
- не оставляйте открытыми лишние методы, если они не используются;
- проверяйте логи после любых изменений в безопасности;
- если сайт атакуют массово, добавьте ограничение на уровне nginx/Apache или WAF;
- не ставьте плагин безопасности только ради одной галочки, если можно обойтись точечным кодом.
Если вам нужен более широкий аудит технических дублей, индексации и чистки сайта, подобные задачи обычно удобнее решать отдельными инструментами вроде Clearfy Pro, но для pingbacks это не обязательное условие — здесь достаточно точечной настройки.
Мини-чек-лист перед публикацией правки
- код добавлен в дочернюю тему или mu-plugin;
- отключён только
pingback.ping, если XML-RPC нужен; - проверено подключение внешнего редактора или приложения;
- посмотрены access logs после изменения;
- нет новых ошибок в журнале сервера или в
debug.log.
Если после правки сайт стал вести себя иначе, не ищите проблему везде сразу. Сначала откатите фильтр, проверьте поведение, а потом уже решайте, нужен ли полный запрет XML-RPC или достаточно точечного отключения pingbacks.