Как запретить XML-RPC pingback в WordPress и убрать лишние запросы

Если сайт на WordPress начал получать лишние обращения к xmlrpc.php, чаще всего проблема не в самом XML-RPC как технологии, а в функции pingback. Именно она дает лишний шум в логах, может участвовать в DDoS-сканировании и иногда создает ненужную нагрузку на сервер. При этом полностью отключать XML-RPC не всегда удобно: у части сайтов через него до сих пор работают внешние сервисы, мобильные клиенты или старые интеграции.

Ниже — рабочий сценарий: сначала быстро понять, что именно происходит, затем отключить только pingback, проверить результат и не сломать остальное.

Когда проблема действительно в XML-RPC pingback

Симптомы обычно довольно узнаваемые. В access-логах много запросов к /xmlrpc.php, а в панели хостинга растет число POST-запросов без видимой причины. Иногда сайт не падает, но начинает заметно чаще упираться в лимиты CPU или I/O. Если включен модуль защиты на стороне сервера, можно увидеть блокировки по сигнатурам XML-RPC.

Важно не путать pingback с обычными запросами WordPress REST API. Это разные механизмы. Если у вас ломается мобильное приложение WordPress или внешний сервис публикации, отключение XML-RPC целиком может быть слишком грубым решением. В таком случае лучше убрать именно pingback и оставить остальное.

Что проверить до изменений

  • Есть ли в логах регулярные обращения к xmlrpc.php.
  • Используются ли внешние сервисы, которым нужен XML-RPC.
  • Есть ли на сайте старые темы или плагины, которые завязаны на pingback.
  • Не закрывает ли проблему уже серверный WAF или fail2ban.

Как отключить pingback без полного отключения XML-RPC

Самый безопасный вариант — убрать поддержку pingback через фильтр xmlrpc_methods. Тогда WordPress перестанет принимать pingback-запросы, но другие XML-RPC методы останутся доступны, если они нужны.

<?php
add_filter( 'xmlrpc_methods', function( $methods ) {
    unset( $methods['pingback.ping'] );
    unset( $methods['pingback.extensions.getPingbacks'] );

    return $methods;
} );

Код можно добавить в functions.php дочерней темы или в небольшой mu-plugin. Для production-сайта mu-plugin обычно надежнее: он не зависит от активной темы и не потеряется при обновлении.

Вариант через mu-plugin

Создайте файл wp-content/mu-plugins/disable-pingback.php. Если папки mu-plugins нет, ее нужно создать вручную.

<?php
/**
 * Plugin Name: Disable XML-RPC Pingback
 */

add_filter( 'xmlrpc_methods', function( $methods ) {
    unset( $methods['pingback.ping'] );
    unset( $methods['pingback.extensions.getPingbacks'] );

    return $methods;
} );

Если нужно убрать только pingback, а XML-RPC оставить для других задач, этого достаточно. Если же внешние интеграции не используются вообще, можно пойти дальше и закрыть xmlrpc.php на уровне сервера или через WordPress-фильтр xmlrpc_enabled.

Когда лучше отключить XML-RPC полностью

Полное отключение оправдано, если вы точно не используете:

  • мобильное приложение WordPress;
  • старые внешние публикации через XML-RPC;
  • интеграции, которые работают только через этот протокол;
  • плагины, завязанные на XML-RPC-методы.

Для такого сценария подойдет фильтр xmlrpc_enabled:

<?php
add_filter( 'xmlrpc_enabled', '__return_false' );

Это уже более жесткое решение. Оно проще в сопровождении, но требует проверки всех интеграций. Если есть сомнения, сначала отключайте только pingback.

Сравнение подходов

ПодходЧто делаетРискКогда выбирать
Отключить pingback через xmlrpc_methodsУбирает только pingback-методыМинимальныйЕсли нужны другие XML-RPC функции
Отключить XML-RPC через xmlrpc_enabledВыключает весь XML-RPCМожет сломать интеграцииЕсли XML-RPC нигде не используется
Закрыть xmlrpc.php на сервереБлокирует доступ до WordPressСамый жесткий вариантЕсли нужна защита на уровне веб-сервера

Как проверить, что решение сработало

Проверка должна быть не на глаз, а по факту ответа сервера. Самый простой способ — отправить тестовый XML-RPC pingback-запрос и посмотреть, что он больше не проходит.

Можно использовать curl и проверить ответ xmlrpc.php:

curl -i https://example.com/xmlrpc.php

Если XML-RPC отключен полностью, ответ обычно будет нерабочим для метода. Если вы убрали только pingback, сам файл может отвечать, но pingback-метод уже не должен выполняться. Для более точной проверки удобнее смотреть логи сервера и отправить тестовый pingback из внешнего источника, который раньше создавал такие запросы.

Практический чек-лист после внедрения:

  • в логах стало меньше обращений к xmlrpc.php;
  • нет ошибок у мобильного приложения WordPress, если оно используется;
  • внешние интеграции продолжают работать;
  • защита хостинга перестала ловить массовые XML-RPC-запросы;
  • страница сайта и админка открываются без новых ошибок.

Частые ошибки и как их исправить

Отключили XML-RPC целиком, а потом сломалась интеграция

Такое бывает, если сайт использовал старый сервис публикации или мобильный клиент. Решение простое: верните xmlrpc_enabled и отключите только pingback через xmlrpc_methods.

Добавили код в активную тему и потеряли его после обновления

Это типичная ошибка. Для постоянной защиты лучше использовать mu-plugin. Он не зависит от темы и не исчезает при обновлении шаблона.

Проверяли только браузером

Открыть /xmlrpc.php в браузере недостаточно. Браузерный GET-запрос не показывает, работает ли именно pingback-метод. Нужна проверка через лог, тестовый POST или внешний сервис.

Путают XML-RPC и REST API

Отключение XML-RPC не должно ломать REST API. Если после изменений перестали работать блоки редактора, мобильное приложение или интеграция с внешним сервисом, причина, скорее всего, в другом месте.

Что еще можно сделать для безопасности и производительности

Если на сайте много мусорных запросов, одного отключения pingback может быть мало. Тогда стоит посмотреть на серверную защиту: ограничение частоты запросов, правила в WAF, базовую фильтрацию на уровне Nginx или Apache. Но эти меры лучше внедрять после того, как вы убедились, что проблема действительно в XML-RPC, а не в общем всплеске ботов.

Для сайтов, где регулярно приходится чистить технический мусор и дубли, полезно держать под рукой инструменты, которые помогают с SEO и технической гигиеной. Например, в Clearfy Pro есть набор функций для отключения лишнего и чистки типовых дублей, но даже с плагином стоит понимать, что именно вы выключаете и зачем.

Если нужен минимальный и предсказуемый вариант, начните с отключения pingback. Это обычно дает нужный эффект без лишнего риска. Полное отключение XML-RPC оставляйте только для случаев, когда вы уверены, что протокол нигде не используется.

Вам также может быть интересно:

  • Уроки WordPress от опытных разработчиков, более 500 материалов.
  • Вопросы и ответы по вордпресс. Здесь вы можете задать свой вопрос и получить ответ от сообщества.
  • Еще один ресурс о ВП с вопросами и ответами от пользователей.
Как создать динамические отзывы в WordPress с помощью плагина Expert Review
01.10.2026
Как отключить XML-RPC в WordPress без плагинов: практическое руководство
25.09.2026
Как создать собственный шорткод в WordPress: практическое руководство
25.09.2026
Как решить проблему, если не работает AJAX в WordPress
15.09.2026
Как использовать AJAX в WordPress для динамической загрузки контента
21.09.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее