is_trackback()WP 1.5.0

Проверяет, является ли текущий запрос запросом на страницу пингов (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.

Управлять отправкой и получением пингов можно в настройках обсуждения:

Управление настройками обсуждения пингами
Работает на основе: WP_Query::is_trackback()
1 раз — 0.000027 сек (очень быстро) | 50000 раз — 0.01 сек (скорость света) | PHP 7.1.2, WP 4.7.3

Хуков нет.

Возвращает

true|false. true/false

Использование

if( is_trackback() ){
	// запрос пинга
}

Примеры

0

#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() WP 6.4.3

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();
}