Robots API
Robots API з’явився у WordPress 5.7. Потрібен він для централізованої зміни директив мета-тегу robots
, щоб теми та плагіни не писали свій «велосипеди», який до того ж можуть конфліктувати одна з одною. Тепер все робиться через фільтр wp_robots .
Читайте також: Налаштовуємо файл robots.txt для WordPress
Про мате-тег robots
Мета-тег robots дозволяє вказати в деталях, як саме повинна оброблятися роботом сторінка – як саме її потрібно індексувати і які моменти потрібно передати в результатах пошуку для користувачів.
Мета-тег robots
потрібно розміщувати в розділі <head> сторінки:
<!DOCTYPE html> <html> <head> <meta name="robots" content="max-image-preview:large" /> </head> ...
Всі функції, пов’язані з новим Robots API, розташовані у файлі /wp-includes/robots-template.php .
Дивіться також можливі директиви мета-тегу robots:
Функція wp_robots()
У WP 5.7 з’явилася функція wp_robots() , яка виводить метатег robots
.
функція автоматично викликається ядром WordPress на всіх сторінках фронту , відбувається це на події wp_head . Таким чином, мета-тег robots
буде виводиться на всіх сторінках фронту автоматично, якщо вказано хоч одну директиву robots.
Функція “чіпляється” на хук у файлі /wp-includes/default-filters.php :
add_action( 'wp_head', 'wp_robots', 1);
Плагін чи тема не повинні викликати wp_robots() окремо! Це може бути потрібне, в особливих випадках, наприклад, коли шаблон не може використовувати wp_head() . У цьому випадку функцію потрібно підключити до свого фільтра або викликати у коді безпосередньо. Приклад:
// підключення до фільтра add_action( 'my_custom_template_head', 'wp_robots'); // Прямий виклик <?php wp_robots() ?>
Як використовувати Robots API
Як уже згадувалося вище, мета-тег robots
автоматично виводиться на всіх сторінках сайту (якщо сайт відкритий для індексації в налаштуваннях) у момент події wp_robots .
Розробникам плагінів, що додають свої robots мета-теги, рекомендується використовувати нове API, переробивши код і підключивши потрібні директиви до фільтра wp_robots
.
Приклади
Фільтр wp_robots передає у прикріплену функцію масив із парами [ директива => значение ]
. Тобто. своя директива додається таким кодом:
add_filter( 'wp_robots', 'my_wp_robots_directives'); function my_wp_robots_directives( $robots ) { $robots['follow'] = true; return $robots; }
В результаті зазначена директива додасться до:
<meta name="robots" content="max-image-preview:large, follow" />
Щоб видалити існуючу директиву, її потрібно видалити з масиву:
add_filter( 'wp_robots', 'my_wp_robots_directives'); function my_wp_robots_directives( $robots ) { unset( $robots['max-image-preview'] ); $robots['follow'] = true; return $robots; }
Отримаємо:
<meta name="robots" content="follow" />
Директива max-image-preview:large
З версії WP 5.7 WordPress за умовчанням додає директиву max-image-preview:large у мета-тег robots
на всі сторінки.
<meta name="robots" content="max-image-preview:large" />
Щоб вимкнути цю директиву, можна використовувати наступний код:
remove_filter( 'wp_robots', 'wp_robots_max_image_preview_large');
max-image-preview: [setting]
Ця директива визначає максимальний розмір зображень, які можуть відображатися в результатах пошуку для цієї сторінки.
Якщо не вказати директиву max-image-preview , можливий попередній перегляд зображення за замовчуванням.
Допустимі значення для [setting]:
- none
- Немає попереднього перегляду зображення.
- standard
- Може бути показано зображення для попереднього перегляду за промовчанням.
- large
- Може бути показано велике зображення, аж до максимальної ширини області перегляду.
Це поширюється на всі види результатів пошуку (пошук Google, Google Картинки, рекомендації та дані, що надаються Асистентом). Обмеження не застосовується у випадках, коли видавець надав окремий дозвіл на використання контенту, наприклад, додав структуровані дані або уклав ліцензійну угоду з компанією Google. Зокрема, структуровані дані можуть визначати канонічну та AMP-версію статті.
Якщо ви не хочете, щоб ваші канонічні сторінки та їх AMP-версії були представлені в Google Пошуку та рекомендаціях у вигляді збільшених піктограм, вкажіть у директиві max-image-preview
значення standard
або none
.
Які ще директиви WP додає за замовчуванням
Robots API також використовується у WP на деяких специфічних сторінках:
Якщо увімкнути опцію “не індексувати сайт”. То robots будуть вказані директиви
noindex, nofollow
(раніше було також) і директиваmax-image-preview:large
додаватися не буде.У попередньому перегляді кастомайзера додається директива
noindex
(раніше було також).Сторінка логіна (wp-login.php) та (wp-activate.php) містить директиви
noindex, noarchive
, а також<meta name="referrer" content="strict-origin-when-cross-origin" />
(раніше було також).- У multisite, сторінка активації сайту (wp-activate.php), де нові користувачі можуть підтвердити свій створений сайт також містить директиви
noindex, noarchive
, а також<meta name="referrer" content="strict-origin-when-cross-origin" />
(раніше було також).
нотатки
З серпня 2021 року Google не підтримує директивуfollow
у метатезі robots.
За фактом, для оптимізаторів нічого не змінилося. Яндекс все ще враховує цю директиву.
Спочатку було поставлено запитання одним фахівцем:
“…у документації Google немає інформації про директиву “follow”… Google ігнорує тепер цю директиву?”
На що Джон Мюллер відповів:
Переклад: “Так, це значення за замовчуванням, тому додатково вказувати його не потрібно. Це все одно що додати директиву “Allow: /” як єдину у файлі robots.txt. Або як зробити дорогу і поставити знак “дозволено рух машин”. Ви цим нікого не здивуєте.
Застарілі PHP функції WP
Новий Robots API замінює різні метатеги роботів, що окремо вводяться, які ядро WordPress використовувало до версії 5.7. Так, такі функції застаріли і не повинні ніде використовуватися:
- Замість wp_robots_noindex() , вона прикріплена до фільтра
wp_robots
. - Замість wp_robots_no_robots() , також прикріплена до фільтра
wp_robots
. - Замість wp_sensitive_page_meta() , яка створювала 2 метатеги, з’явилися дві окремі функції:
- Для директив
noindex, noarchive
функція wp_robots_sensitive_page() її можна повість на хукwp_robots
де це необхідно. - Для додаткового
referrer
мета-тегу з’явилася функція wp_strict_cross_origin_referrer() , її потрібно прикріплювати до хукаwp_head
.
- Для директив
Усі функції постійно прикріплені до хука wp_robots
в ядрі – файл /wp-includes/default-filters.php :
// Robots filters. add_filter( 'wp_robots', 'wp_robots_noindex'); add_filter( 'wp_robots', 'wp_robots_noindex_embeds' ); add_filter( 'wp_robots', 'wp_robots_noindex_search'); add_filter( 'wp_robots', 'wp_robots_max_image_preview_large'); if ( isset( $_GET['replytocom'] ) ) { add_filter( 'wp_robots', 'wp_robots_no_robots'); }