do_robots() WP 2.1.0

Виводить на екран контент файлу robots.txt . Встановлює заголовок HTTP файлу. Створює динамічний файл robots.txt .

У WP ця функція зачеплена на однойменний хук 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. Нічого.

Використання

do_robots();

Приклади

0

#1 Створимо динамічний 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/
0

#2 Впровадимося в 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.1.0Введено.
З версії 5.3.0Переміщення “Disallow: /” output if search engine visiblity is discouraged in favor of robots meta HTML tag via wp_robots_no_robots() filter callback.

Код do_robots() WP 6.0.2

function do_robots() {
	header( 'Content-Type: text/plain; charset=utf-8' );

	/**
	 * Fires when displaying the robots.txt file.
	 *
	 * @ 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";

	/**
	 * Filters the robots.txt output.
	 *
	 * @ Since 3.0.0
	 *
	 * @param string $output The robots.txt output.
	 * @param bool $public Whether site is considered "public".
	 */
	echo apply_filters( 'robots_txt', $output, $public);
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *