# DO_ROBOTS() │ WP 2.1.0
Функция DO_ROBOTS()
отображает содержимое файла robots.txt и устанавливает нужные HTTP-заголовки. Она используется для создания динамического файла robots.txt.
В WordPress эта функция подключена к хуку do_robots
, который срабатывает в файле template-loader.php
при запросе к /robots.txt
:
```php
// Обрабатывает фиды и трекбеки, даже если не используются темы.
if ( is_robots() ) :
/**
* Срабатывает, когда загрузчик шаблонов обрабатывает запрос к robots.txt.
*
* @since 2.1.0
*/
do_action( 'do_robots' );
return;
elseif ( is_feed() ) :
...
Результат этой функции можно изменить с помощью хуков:
- do_robotstxt — действие, которое срабатывает в начале функции. Вы можете добавить любой текст с помощью этого хука, и он будет отображен перед основным содержимым robots.txt.
- robots_txt — фильтр, который срабатывает в конце функции и позволяет изменить всё содержимое robots.txt.
Функция отправляет HTTP-заголовки, поэтому её нельзя использовать после того, как заголовки уже были отправлены. Лучше всего использовать эту функцию для создания файла robots.txt, а не создавать физический файл в корне сайта, так как это дает возможность плагинам изменять содержимое.
Хуки из функции
- do_robotstxt
- robots_txt
Возврат
null
: Ничего не возвращается.
Примеры
Пример 1: Изменение содержимого robots.txt с помощью фильтра robots_txt
Давайте добавим правило "Disallow: */comments".
add_filter('robots_txt', 'add_robotstxt');
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( "rn", $lines );
die; // Завершаем выполнение PHP
}
Теперь, когда вы перейдете по адресу http://example.com/robots.txt
, будет отображаться следующее содержимое:
User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Изменения в функции
С версии 2.1.0 функция была введена. С версии 5.3.0 изменено поведение: вывод "Disallow: /" будет убран, если видимость сайта для поисковых систем ограничена с помощью мета-тега robots в HTML через колбек wp_robots_no_robots()
.
Код функции do_robots
function do_robots() {
header( 'Content-Type: text/plain; charset=utf-8' );
/**
* Срабатывает при отображении файла robots.txt.
*
* @since 2.1.0
*/
do_action( 'do_robotstxt' );
$output = "User-agent: *n";
$public = get_option( 'blog_public' );
$site_url = parse_url( site_url() );
$path = ( ! empty( $site_url['path'] ) ) ? $site_url['path'] : '';
$output .= "Disallow: $path/wp-admin/n";
$output .= "Allow: $path/wp-admin/admin-ajax.phpn";
/**
* Фильтрует вывод robots.txt.
*
* @since 3.0.0
*
* @param string $output Вывод robots.txt.
* @param bool $public Является ли сайт "публичным".
*/
echo apply_filters( 'robots_txt', $output, $public );
}
Связанные функции
- _doing_it_wrong()
- cache_javascript_headers()
- download_url()
- get_privacy_policy_url()
- maybe_convert_table_to_utf8mb4()
- nocache_headers()
- show_admin_bar()
- wp_check_browser_version()
- wp_die()
- wp_editor()
- wp_get_raw_referer()
- wp_get_referer()
- wp_install_defaults()
- wp_magic_quotes()
- wp_mail()
- wp_oembed_get()
- wp_redirect()
- wp_safe_redirect()
- wp_star_rating()
- wp_timezone_choice()
- wp_validate_redirect()