do_robots()
Выводит на экран контент файла robots.txt. Устанавливает HTTP заголовок файла. Создает динамический файл robots.txt.
В WP эта функция зацеплена на одноименный хук do_robots, который срабатывает в файле template-loader.php для URL /robots.txt:
// Process feeds and trackbacks even if not using themes. if ( is_robots() ) : /** * Fired when the template loader determines a robots.txt request. * * @since 2.1.0 */ do_action( 'do_robots' ); return; elseif ( is_feed() ) : ...
Изменить результат этой функции (код файла) можно через хуки:
- do_robotstxt — событие срабатывает в начале функции. На этом хуке можно вывести какой либо текст и он будет выведен в файле robots.txt перед базовым кодом файла.
- robots_txt — фильтр срабатывает в конце и фильтрует код (текст) файла robots.txt.
О файле robots.txt и правилах его создания, вы можете почитать в этой моей статье.
Функция устанавливает HTTP заголовок, поэтому использование её внутри HTML файла приведет к ошибке.
Создавать файл robots.txt лучше с помощью этой функции, а не путем прямого создания этого файла в корне сайта. Это даст возможность плагинам изменять ваш robots.txt.
Хуки из функции
Возвращает
null
. Ничего (null).
Использование
do_robots();
Примеры
#1 Изменим контент robots.txt через фильтр robots_txt
Добавим правило "Disallow: */comments":
add_filter( 'robots_txt', 'add_robotstxt', -1 ); function add_robotstxt( $text ){ $text .= "Disallow: */comments"; return $text; }
Пройдя по ссылке http://example.com/robots.txt получим примерно такой текст:
User-agent: * Disallow: /wp-admin/ Disallow: /wp-includes/ Disallow: */comments
#2 Создадим динамический robots.txt
Через файл темы functions.php. В этом случае создавать файл robots.txt физически не нужно. Добавим такой код в начало файла:
add_action( 'do_robotstxt', 'my_robotstxt' ); function my_robotstxt(){ $lines = [ 'User-agent: *', 'Disallow: /wp-admin/', 'Disallow: /wp-includes/', '', ]; echo implode( "\r\n", $lines ); die; // обрываем работу PHP }
Теперь, пройдя по ссылке http://example.com/robots.txt
мы получим такой текст:
User-agent: * Disallow: /wp-admin/ Disallow: /wp-includes/
Список изменений
С версии 2.1.0 | Введена. |
С версии 5.3.0 | Remove the "Disallow: /" output if search engine visibility is discouraged in favor of robots meta HTML tag via wp_robots_no_robots() filter callback. |