В WordPress функция do_robots()
динамически создает контент для файла robots.txt
. Этот файл используется для управления доступом поисковых ботов к контенту сайта, указывая, какие страницы и ресурсы можно или нельзя индексировать.
do_robots()
do_robots()
в WordPress вызывается через одноименный хук, срабатывающий при обращении к robots.txt
на сайте (example.com/robots.txt
). Эта функция позволяет выводить инструкции для поисковых систем, а также предоставляет возможности для настройки с помощью фильтров robots_txt
и do_robotstxt
.
Возвращаемое значение
Функция не возвращает значений (возвращает null
), а выводит текст в robots.txt
.
Ключевые фильтры и хуки для настройки
do_robotstxt
— вызывается в началеdo_robots()
, что позволяет добавлять текст до основного контентаrobots.txt
.robots_txt
— срабатывает в конце функции для фильтрации и изменения сгенерированного содержимого.
Пример 1: Добавление правила Disallow
для комментариев
Добавим правило Disallow: */comments
через фильтр robots_txt
, чтобы скрыть страницы с комментариями от поисковых систем.
add_filter( 'robots_txt', 'customize_robots_txt', 10, 2 );
function customize_robots_txt( $output, $public ) {
$output .= "Disallow: */comments\n";
return $output;
}
При переходе по ссылке http://example.com/robots.txt
, WordPress сгенерирует файл с содержимым:
User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: */comments
Пример 2: Динамическое создание robots.txt
без физического файла
Создадим динамический файл robots.txt
, добавив правила для ограничения доступа к административной панели и системным директориям WordPress.
add_action( 'do_robotstxt', 'generate_dynamic_robots' );
function generate_dynamic_robots() {
$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/
Пример 3: Добавление ссылки на Sitemap
в robots.txt
С помощью фильтра robots_txt
можно добавить ссылку на карту сайта, чтобы поисковые системы могли быстро находить свежий контент. Используем хук для добавления Sitemap
в файл robots.txt
.
add_filter( 'robots_txt', 'add_sitemap_to_robots', 10, 2 );
function add_sitemap_to_robots( $output, $public ) {
$sitemap_url = site_url( '/sitemap_index.xml' );
$output .= "Sitemap: $sitemap_url\n";
return $output;
}
Результат запроса http://example.com/robots.txt
:
User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Sitemap: http://example.com/sitemap_index.xml
Пример 4: Полный запрет для всех ботов при отключенной индексации
Если на сайте отключена видимость для поисковых систем (в настройках админ-панели), можно жестко запретить доступ ко всему контенту.
add_filter( 'robots_txt', 'restrict_all_access_if_noindex', 10, 2 );
function restrict_all_access_if_noindex( $output, $public ) {
if ( '0' === $public ) {
$output = "User-agent: *\nDisallow: /\n";
}
return $output;
}
Теперь, при отключенной индексации, robots.txt
будет содержать строгий запрет:
User-agent: *
Disallow: /
Пример 5: Исключение файлов определенных типов из индексации
Ограничим доступ к файлам с конкретными расширениями (например, изображениям и шрифтам) для экономии ресурсов при индексации.
add_filter( 'robots_txt', 'exclude_file_types', 10, 2 );
function exclude_file_types( $output, $public ) {
$disallowed_types = ['jpeg', 'jpg', 'gif', 'png', 'webp', 'woff', 'woff2', 'ttf', 'eot'];
foreach ( $disallowed_types as $type ) {
$output .= "Disallow: /*.$type$\n";
}
return $output;
}
Итоговый robots.txt
:
User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /*.jpeg$
Disallow: /*.jpg$
Disallow: /*.gif$
Disallow: /*.png$
Disallow: /*.webp$
Disallow: /*.woff$
Disallow: /*.woff2$
Disallow: /*.ttf$
Disallow: /*.eot$
Заключение
Функция do_robots()
и фильтры WordPress позволяют гибко настраивать robots.txt
без необходимости физического создания файла в корне сайта, что упрощает управление доступом и интеграцию с плагинами.