WP Trackbacks – трекбеки, как они есть
28.05.2010
В русскоязычной части интернета достаточно много информации на тему трекбеков. Но все они не раскрывают тему в достаточной мере, чтобы можно было применять информацию на практике. Я решил собрать всю информацию воедино, и раскрыть некоторые нюансы по работе с трекбеками для движка Wordpress.
Как уже многие знают, trackback – это механизм уведомления других сайтов (не обязательного блогов). О пингбэках (pingbacks) сейчас говорить не будем, чтобы не запутаться в формулировках. Трекбек применяется в тех случаях, когда мы хотим оставить комментарий на чью-либо статью в собственном блоге. При этом автору статьи отправляется уведомление, что его статья послужила вдохновением для написания очередного поста. Другими словами, автору статьи, а точнее блогу, отправляется информация, что на определённый пост блога сослались, используя механизм трекбека.
Выглядит это следующим образом:

Как видите, эта возможность напоминает обыкновенный комментарий. Отличие только в том, что вместо имени автора подставляется название блога, а вместо текста комментария подставляется вырезка из статьи. Также обратите внимание, что перед вырезкой идёт заголовок ссылающейся статьи.
Механизм трекбеков очень активно используется спамерами, поскольку он не требует какого-либо подтверждения. Одобрение трекбека в оснастке комментариев – это уже другой вопрос. Из этого следует, что всё, что необходимо знать спамеру – это адрес вашего блога или статьи. Именно поэтому многие блогеры отключают возможность использования трекбеков.
Теперь о возможности включения и выключения трекбеков на движке Wordpress.
За включение и отключение трекбеков отвечает параметр «Разрешить оповещения с других блогов (уведомления и обратные ссылки)», который находится на закладке «Обсуждение» меню «Параметры».

В отдельных случаях можно включить эту возможность при написании поста. Для этого необходимо установить флажок «Разрешить обратные ссылки и уведомления».

Отправка трекбеков
Чтобы отправить трекбек средствами Wordpress, необходимо отыскать на исходной странице так называемый Trackback URL (адрес для приема трекбеков), и скопировать его в буфер обмена. Если блог построен на Wordpress, то адрес Trackback URL обычно состоит из адреса записи и окончания /trackback. Например:
http://seozest.ru/seo/seoquake/trackback
В том случае, если Wordpress-блог не использует SEO-ссылки (ЧПУ), то Trackback URL выглядит так:
http://seozest.ru/wp-trackback.php?p=266, где 266 – это ID записи.
У меня на блоге Trackback URL можно найти перед списком комментариев:
После того как мы получили Trackback URL, создаем новую запись, и вставляем наш адрес в поле «Отправить обратные ссылки»:
В результате этих действий будет отправлен трекбек по указанной ссылке. Как видите, процедура несложная.
А чтобы убедиться, что трэкбэк был отправлен, необходимо войти в режим редактирования записи, и обратить внимания на поле «Отправлены уведомления»:
В указанном месте будут перечислены все адреса, на которые были отправлены уведомления.
Тест на приём трекбеков вашим блогом
Чтобы убедиться, что ваш сайт корректно принимает трекбеки, введите Trackback URL одной из страниц, и нажмите кнопку «Тестировать».
Обратите внимание, что при попытке разместить трекбек повторно (имеется ввиду на ту же самую страницу), то Wordpress просто его не примет. Это было сделано специально во избежание дубликатов, принятых от того же самого автора.
Как избавиться от trackback спама?
Очень актуальная тема на сегодняшний день. На первый взгляд кажется, что для этого достаточно просто отключить параметр «Разрешить оповещения с других блогов (уведомления и обратные ссылки)» в параметрах Wordpress-блога. Но дело в том, что данный параметр отключает возможность уведомлений только для новых записей.
Поэтому для решения проблемы спама, необходимо открыть каждую запись блога в режиме редактирования, и снять указанный флажок:

В том случае, если записей у вас много, можно воспользоваться SQL-запросом, отключающим этот параметр. Легче всего сделать это через приложение phpMyAdmin.
Откройте phpMyAdmin, и выберите в левом списке необходимую базу данных.
Перейдите на закладку SQL, и внесите в неё следующие строки:
UPDATE wp_posts SET ping_status='closed' WHERE post_status='publish' AND post_type='post'; UPDATE wp_posts SET ping_status='closed' WHERE post_status='publish' AND post_type='page';
После этого нажмите ОК, и дождитесь сообщения об успешном выполнении запроса:
Конечно можно было пойти более легким путем, и просто удалить файл wp-trackback.php, но я бы не советовал вам этого делать. А поскольку мы затронули название этого файла, рассмотрим техническую сторону механизма трекбеков.
Техническая сторона медали
Отправка трекбека – это передача порции информации через HTTP-запрос, используя метод POST. Совершенно очевидно, что должен существовать обработчик, который будет принимать эту информацию. Для Wordpress это файл wp-trackback.php, находящийся в корне сайта. Внимательные блогеры уже давно его заметили.
Если говорить о ЧПУ, то запрос перенаправляется на wp-trackback.php, если адрес поста заканчивается ключевым словом /trackback. В случае обычных ссылок запрос идёт напрямую к wp-trackback.php. Вы это могли заметить, когда я писал о Trackback URL.
Сейчас уже не так много Wordpress-блогов, где можно найти упоминание о Trackback URL для обратного трека.

А ведь он необходим, чтобы вам могли отправить уведомление о ссылке.
Чтобы вставить в шаблон записи ссылку для трекбека, воспользуйтесь следующей конструкцией:
<a href="<?php trackback_url() ?>">Trackback на текущую запись</a>
Теперь продолжим наш рассказ о пингвинах.
Обработчику передаются следующие переменные:
- blog_name – название сайта или блога.
- url – адрес сайта или блога.
- title – заголовок статьи.
- exerpt – вырезка из статьи.
Обязательным параметром из них является только один – url.
Ну а чтобы скорректировать запрос определённой записи (или странице), методом GET передаем переменную p, содержащую ID записи.
В случае удачного запроса обработчик возвращает следующее сообщение (в XML-формате):
<?xml version="1.0" encoding="utf-8"?> <response> <error>0</error> </response>
В случае неудачного запроса возвращает ошибку в том же формате:
<?xml version="1.0" encoding="utf-8"?> <response> <error>1</error> <message>В этом месте следует описание ошибки</message> </response>
Собственно, на этом можно и заканчивать.
почту
RSS
Twitter
Трэкбэки, пингбэки… Как всё тут полезно, интересно. Картиночка хороша.
Автор даже так старался, что влепил одну лишнюю запятую. Но и она не испортила общей стройности и внятности изложения. Ждём продолжения историй о пингвинах =).
[...] граждане, которые еще и умудряются вам при этом трекбеки присылать: это же надо настолько обнаглеть? Обидно? [...]