do_robotstxt
Позволяет полностью заменить содержимое страницы /robots.txt.
Срабатывает при формировании ответа виртуального файла robots.txt — до добавления стандартного содержимого. Хук позволяет вывести свои строки в начале ответа.
Когда запрашивают /robots.txt и в корне сайта нет физического файла, WordPress отдает «виртуальный» файл. Этот хук вызывается в процессе его формирования. Всё, что вы выведете через echo, попадёт в начало ответа до стандартного блока.
Используйте robots_txt, когда нужно дополнить дефолтный контент robots.txt.
Заметки:
-
Событие не передаёт параметров.
-
Вывод делайте через echo; возвращаемого значения нет.
-
Не выводите заголовки — WordPress их отправляет сам.
-
Каждую директиву заканчивайте переводом строки
\n. - Если в корне имеется физический robots.txt, веб-сервер отдаст его, и событие не сработает.
Использование
add_action( 'do_robotstxt', 'wp_kama_do_robotstxt_action' );
/**
* Function for `do_robotstxt` action-hook.
*
* @return void
*/
function wp_kama_do_robotstxt_action(){
// action...
}
Примеры
#1 Заменим контент страницы /robots.txt
add_action( 'do_robotstxt', 'wp_kama_robots_txt' );
function wp_kama_robots_txt(){
$lines = [
'User-agent: *',
'Disallow: /wp-admin/',
'Disallow: /wp-includes/',
'',
];
echo implode( "\r\n", $lines );
die; // обрываем работу PHP
}
Теперь, пройдя по ссылке http://site.com/robots.txt увидим:
User-agent: * Disallow: /wp-admin/ Disallow: /wp-includes/
#2 Блокируем конкретного бота
Добавляем секцию для «плохого» бота — запретить обход всего сайта.
add_action( 'do_robotstxt', 'wpk_block_badbot_in_robots' );
function wpk_block_badbot_in_robots() {
echo "User-agent: BadBot\n";
echo "Disallow: /\n\n";
}Список изменений
| С версии 2.1.0 | Введена. |
Где вызывается хук
do_action( 'do_robotstxt' );