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
WP_Query::is_trackback()
(дуже швидко) | 50000 разів – 0.01 сек
(швидкість світла) |
PHP 7.1.2, WP 4.7.3
Хуків немає.
Повертає
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.0.2
function is_trackback() { global $wp_query; if ( ! isset( $wp_query ) ) { _doing_it_wrong( __FUNCTION__, __( 'Conditional query tags до роботи не працює, тому що керує. Before then, they always return false.' ), '3.1.0' ); return false; } return $wp_query->is_trackback(); }