Pingback
Коротко
Протокол автоматического уведомления сайта о том, что на него сослались: блог-источник сам сообщает адресату ссылку, и та появляется в его комментариях.
Что такое «Pingback»
Pingback придумали в начале 2000-х как способ связать блоги между собой: написал запись со ссылкой на коллегу — у коллеги под записью появилась отметка «вас процитировали». В WordPress механизм включён по умолчанию до сих пор и работает в обе стороны: сайт и отправляет уведомления, и принимает их.
Как проходит обмен
- Вы публикуете запись со ссылкой на чужую статью.
- WordPress открывает ту статью и ищет адрес приёмника — заголовок
X-Pingbackили тег<link rel="pingback">. - На найденный адрес, обычно
xmlrpc.php, уходит запросpingback.pingс двумя адресами: откуда ссылка и куда. - Принимающий сайт скачивает страницу-источник, проверяет, что ссылка там правда есть, и создаёт комментарий особого типа.
Проверка наличия ссылки — главное отличие от trackback, где ничего не проверяется. Весь обмен идёт через XML-RPC WordPress.
Почему его отключают
Проверка ссылки не спасла от злоупотреблений. Пингбэки стали каналом спама в комментариях, а метод pingback.ping использовали для атак: тысячи сайтов на WordPress по команде злоумышленника одновременно запрашивали страницу жертвы. Ещё одна мелкая досада — самопингбэки: ссылаясь на свою же старую запись, вы получаете под ней служебный комментарий.
Как выключить
В «Настройках → Обсуждение» снимают две галочки: «Пытаться оповестить блоги, упоминаемые в статье» и «Разрешить оповещения с других блогов». Это действует на новые записи; у старых пингбэки закрываются в настройках обсуждения каждой записи или массово. Чтобы сайт не принимал запросы совсем, метод убирают из XML-RPC:
add_filter( 'xmlrpc_methods', function ( $methods ) {
unset( $methods['pingback.ping'] );
return $methods;
} );
add_filter( 'wp_headers', function ( $headers ) {
unset( $headers['X-Pingback'] );
return $headers;
} );
Второй фильтр убирает заголовок X-Pingback из ответов сервера, чтобы сайт не объявлял адрес приёмника.

