Pingback и trackback в WordPress давно стали источником лишнего шума: уведомления о ссылках, спам в комментариях, лишние запросы к сайту и путаница в старом контенте. Если сайт уже живой и на нем есть история публикаций, отключать это лучше аккуратно: сначала понять, где именно функция включена, потом убрать ее на уровне настроек и, при необходимости, добить кодом в теме или плагине.
Ниже — рабочий сценарий для сайта, где нужно отключить pingback и trackback без побочных эффектов для обычных комментариев и без поломки старых записей.
Когда pingback и trackback реально мешают
Проблема обычно проявляется не в одном месте. На практике это один из трех сценариев:
- в комментариях появляются спам-уведомления от внешних сайтов;
- в админке растет количество лишних уведомлений и модерации;
- сайт продолжает отправлять и принимать pingback, хотя они уже не нужны.
Отдельно trackback часто путают с обычными комментариями. Это не одно и то же: комментарии можно оставить, а pingback/trackback отключить полностью.
Что именно нужно проверить перед изменениями
- включены ли pingback на уровне настроек обсуждения;
- разрешены ли комментарии на старых и новых записях;
- не переопределяет ли тему или плагин поведение через фильтры;
- не включены ли уведомления о ссылках в уже опубликованных записях.
Диагностика: где в WordPress сидит проблема
Сначала откройте Настройки → Обсуждение. Там есть два важных пункта: разрешение уведомлений о ссылках с других блогов и попытка уведомлять другие блоги при публикации. Если оба включены, WordPress будет работать с pingback в обе стороны.
Дальше проверьте сами записи. У старых постов в блоке настроек документа или в метабоксе обсуждения может быть включено разрешение комментариев и уведомлений о ссылках. Если вы отключили настройку глобально, но у конкретной записи она осталась активной, поведение может отличаться.
Если сайт на кастомной теме, полезно посмотреть, нет ли в functions.php или в плагине кода, который возвращает поддержку pingback обратно. Иногда это сделано через фильтры или через включение поддержки комментариев для всех типов записей.
Как отключить pingback и trackback в админке
Если нужно быстро убрать функцию без кода, начните с глобальных настроек. Это самый безопасный вариант, если у вас обычный сайт на WordPress без сложной логики.
- Откройте Настройки → Обсуждение.
- Снимите галочку с пункта про уведомления о ссылках с других блогов.
- Снимите галочку с пункта про попытку уведомлять другие блоги при публикации.
- Сохраните изменения.
После этого новые записи не должны отправлять pingback, а сайт перестанет принимать такие уведомления в штатном режиме. Но если тема или плагин переопределяют поведение, этого может быть недостаточно.
Отключение кодом: надежный вариант для темы или mu-plugin
Если нужен предсказуемый результат, лучше отключить pingback на уровне кода. Так вы не зависите от ручных настроек и не ловите сюрпризы после обновления темы.
Добавьте код в functions.php дочерней темы или в отдельный mu-plugin.
<?php
// Отключаем поддержку pingback для записей.
add_action( 'init', function () {
remove_action( 'wp_head', 'rsd_link' );
remove_action( 'wp_head', 'wlwmanifest_link' );
remove_action( 'wp_head', 'wp_generator' );
} );
// Запрещаем самопинг при публикации.
add_action( 'pre_ping', function ( &$links ) {
foreach ( $links as $key => $link ) {
if ( false !== strpos( $link, home_url() ) ) {
unset( $links[ $key ] );
}
}
} );
// Отключаем уведомления о ссылках в комментариях.
add_filter( 'pings_open', '__return_false' );
add_filter( 'xmlrpc_enabled', '__return_false' );
Здесь важно не смешивать задачи. pings_open закрывает pingback/trackback для записей, а xmlrpc_enabled отключает XML-RPC целиком. Если вам нужен Jetpack или внешние сервисы, этот фильтр использовать нельзя — тогда отключайте только pingback на уровне обсуждений и пингов, без рубильника для XML-RPC.
Более точечный вариант без отключения XML-RPC
Если XML-RPC нужен, но pingback нет, не трогайте xmlrpc_enabled. Вместо этого можно отключить только pingback-метод через фильтр:
<?php
add_filter( 'xmlrpc_methods', function ( $methods ) {
unset( $methods['pingback.ping'] );
unset( $methods['pingback.extensions.getPingbacks'] );
return $methods;
} );
Это полезно, когда сайт использует внешние интеграции, но вы хотите убрать именно pingback-спам и лишние входящие уведомления.
Сравнение подходов: админка, код, плагин
| Способ | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| Настройки WordPress | Нужно быстро отключить на обычном сайте | Без кода, безопасно | Не всегда перекрывает тему или плагин |
| Код в дочерней теме / mu-plugin | Нужен стабильный результат | Контроль, можно точечно отключить pingback | Нужно аккуратно поддерживать код |
| Плагин для чистки сайта | Нужно закрыть несколько технических функций сразу | Удобно для комплексной настройки | Лишняя зависимость от плагина |
Если у вас уже стоит плагин для технической чистки, например Clearfy Pro, такие настройки часто удобнее собрать в одном месте, чем размазывать по теме и нескольким сниппетам. Но даже в этом случае полезно понимать, что именно отключается и на каком уровне.
Проверка результата после внедрения
После изменений не ограничивайтесь визуальной проверкой в админке. Нужно убедиться, что pingback действительно перестал работать.
- Откройте опубликованную запись и проверьте, что в настройках обсуждения нет активных уведомлений о ссылках.
- Попробуйте добавить внутреннюю ссылку на другую запись сайта и убедитесь, что самопинг не создает лишний комментарий.
- Посмотрите журнал комментариев: новых pingback-уведомлений быть не должно.
- Если отключали XML-RPC, проверьте внешние интеграции, которые могли его использовать.
Для быстрой технической проверки можно посмотреть заголовки и поведение endpoint’ов. Если XML-RPC отключен, запрос к /xmlrpc.php должен перестать работать как раньше. Если вы отключали только pingback-методы, сам файл может быть доступен, но методы pingback должны быть недоступны.
Частые ошибки и как их исправить
Отключили не то и сломали интеграции
Самая частая ошибка — выключить xmlrpc_enabled, когда нужен только pingback. В результате перестают работать сервисы, которые завязаны на XML-RPC. Если у вас есть Jetpack, мобильные клиенты или внешние публикации, сначала проверьте, действительно ли можно отключить весь XML-RPC.
Сняли галочку в настройках, но pingback остались
Так бывает, если тема или плагин добавляют собственную логику. В этом случае настройка в админке не является последней точкой. Проверьте functions.php, mu-plugin и плагины оптимизации.
Отключили пинги на новых записях, но старые продолжают шуметь
У старых записей могли сохраниться индивидуальные настройки обсуждения. Их нужно проверить отдельно, особенно если сайт давно работает и контент публиковался разными редакторами.
Удалили поддержку комментариев целиком
Это уже другая задача. Если убрать комментарии глобально, вы потеряете обычную обратную связь, а не только pingback. Для большинства сайтов это слишком грубое решение.
Практические советы по безопасности и производительности
Отключение pingback само по себе не делает сайт защищенным, но убирает один из лишних каналов шума и потенциальной нагрузки. Если сайт часто получает спам-уведомления, имеет смысл дополнительно:
- ограничить комментарии на старых записях, если они не нужны;
- проверить антиспам-защиту для обычных комментариев;
- не оставлять включенным XML-RPC без необходимости;
- держать тему и плагины в актуальном состоянии, чтобы не было неожиданных переопределений поведения.
Если задача не точечная, а вы регулярно чистите сайт от дублей, технических хвостов и лишних функций, удобнее собирать это в одном инструменте, а не держать набор разрозненных сниппетов. Но для production-сайта все равно стоит понимать, что именно отключено и как это проверить после обновлений.
В итоге рабочая схема простая: сначала отключить pingback в настройках, потом закрепить результат кодом, если сайт сложный, и обязательно проверить, не затронули ли вы XML-RPC и обычные комментарии. Так вы убираете лишний шум, но не ломаете полезные сценарии WordPress.