robots_txtхук-фильтрWP 3.0.0

Позволяет дополнить уже сформированный контент страницы /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)
Флаг, указывающий, открыт ли сайт для индексации (по настройке «Чтение» → «Запретить индексирование»).

Примеры

0

#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;
}
0

#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 Введена.

Где вызывается хук

do_robots()
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 );