robots_txt
Позволяет дополнить уже сформированный контент страницы /robots.txt.
По умолчанию WP 5.5 создает следующий контент для страницы /robots.txt:
User-agent: * Disallow: /wp-admin/ Allow: /wp-admin/admin-ajax.php Sitemap: http://example.com/wp-sitemap.xml
Этот хук позволяет дополнить уже имеющиеся данные файла robots.txt. Код можно вставить в файл темы functions.php.
Смотрите do_robots() — как работает динамическое создание файла robots.txt.
Исползуйте хук do_robotstxt, когда нужно полностью заменить контент robots.txt.
Читайте также: robots.txt в WordPress
Использование
add_filter( 'robots_txt', 'wp_kama_robots_txt_filter', 10, 2 );
/**
* Function for `robots_txt` filter-hook.
*
* @param string $output The robots.txt output.
* @param bool $public Whether the site is considered "public".
*
* @return string
*/
function wp_kama_robots_txt_filter( $output, $public ){
// filter...
return $output;
}
- $output(string)
- Исходное содержимое robots.txt.
- $public(bool)
- Флаг, указывающий, открыт ли сайт для индексации (по настройке «Чтение» → «Запретить индексирование»).
Примеры
#1 Добавление своих директив к robots.txt
Простой пример: добавляем запрет для папки /private/.
add_filter( 'robots_txt', 'append_private_disallow', 10, 2 );
function append_private_disallow( $output, $public ) {
$output .= "\nDisallow: /private/\n";
return $output;
} #2 Еще пример дополнения robots_txt
// Дополним базовый robots.txt
// -1 before wp-sitemap.xml
add_action( 'robots_txt', 'wp_kama_robots_txt_append', -1 );
function wp_kama_robots_txt_append( $output ){
$str = <<<'TXT'
Disallow: /cgi-bin # Стандартная папка на хостинге.
Disallow: /? # Все параметры запроса на главной.
Disallow: *?s= # Поиск.
Disallow: *&s= # Поиск.
Disallow: /search # Поиск.
Disallow: /author/ # Архив автора.
Disallow: */embed # Все встраивания.
Disallow: */page/ # Все виды пагинации.
Disallow: */xmlrpc.php # Файл WordPress API
Disallow: *utm*= # Ссылки с utm-метками
Disallow: *openstat= # Ссылки с метками openstat
TXT;
$str = trim( $str );
$str = preg_replace( '/^[\t ]+(?!#)/mU', '', $str );
$output .= "$str\n";
return $output;
}
Теперь перейдем на страницу /robots.txt и видим:
User-agent: * Disallow: /wp-admin/ Allow: /wp-admin/admin-ajax.php Disallow: /cgi-bin # Стандартная папка на хостинге. Disallow: /? # Все параметры запроса на главной. Disallow: *?s= # Поиск. Disallow: *&s= # Поиск. Disallow: /search # Поиск. Disallow: /author/ # Архив автора. Disallow: */embed # Все встраивания. Disallow: */page/ # Все виды пагинации. Disallow: */xmlrpc.php # Файл WordPress API Disallow: *utm*= # Ссылки с utm-метками Disallow: *openstat= # Ссылки с метками openstat Sitemap: http://example.com/wp-sitemap.xml
Обратите внимание, что мы дополнили родные данные ВП, а не заменили их.
Список изменений
| С версии 3.0.0 | Введена. |
Где вызывается хук
robots_txt
wp-includes/functions.php 1733
echo apply_filters( 'robots_txt', $output, $public );
Где используется хук в WordPress
wp-includes/sitemaps/class-wp-sitemaps.php 78
add_filter( 'robots_txt', array( $this, 'add_robots' ), 0, 2 );