is_trackback()
Проверяет, является ли текущий запрос запросом на страницу пингов (trackback)
За обработку запроса тракбэков отвечает файл wp-trackback.php.
Когда может пригодится?
Проверять запрос может пригодится, когда например вы подключаетесь к основному запросу и вам нужно сделать в нем какие-то изменения, только для пингов пришедших с других сайтов.
Задача крайне редкая.
Как это работает?
Когда вы пишите контент для записи и вставляете туда ссылки, WordPress пытается уведомить сайты (домены внешних ссылок) что вы на них ссылаетесь. Такое уведомление называется:
- Трэкбэком или Пингбэком для того кто получает это уведомление.
- Пингом для того кто отправляет это уведомление.
В этом случае WordPress, на котором публикуется запись с ссылками, отправляет POST запрос в файл wp-trackback.php. Там подгружается ядро WordPress и в основной запрос устанавливается параметр tb=1
require_once( dirname( __FILE__ ) . '/wp-load.php' ); wp( [ 'tb' => '1' ] );
Параметр tb устанавливает свойство WP_Query::is_trackback = true - это означает, что сработает условный тег is_trackback(), что в свою очередь означает, что это запрос трэкбэка (пингбэка). Далее, проверяются переданные POST данные и если все с ними в порядке, в таблицу комментариев добавляется пинг, сообщающий вам что на вашу статью сослались. Тип комментария в БД при этом указывается как pingback
: comment_type = pingback.
Управлять отправкой и получением пингов можно в настройках обсуждения:
Читайте также: Как работают уведомления (пинги) в WordPress
Хуков нет.
Возвращает
true|false
. true/false
Использование
if( is_trackback() ){ // запрос пинга }
Примеры
#1 Установим HTTP заголовок ответа для trackback запроса
add_action( 'template_redirect', function(){ if( is_trackback() ){ header( 'X-Disabled-Reason: trackback' ); } } );
Заметки
- Global. WP_Query. $wp_query WordPress Query object.
Список изменений
С версии 1.5.0 | Введена. |
Код is_trackback() is trackback WP 6.6.1
function is_trackback() { global $wp_query; if ( ! isset( $wp_query ) ) { _doing_it_wrong( __FUNCTION__, __( 'Conditional query tags do not work before the query is run. Before then, they always return false.' ), '3.1.0' ); return false; } return $wp_query->is_trackback(); }