do_robots

Выводит на экран контент для файла robots.txt. Устанавливает HTTP заголовок файла. С её помощью создается динамический файл robots.txt.

Создавать файл robots.txt лучше с помощью этой функции, чтобы дать возможность плагинам изменять ваш robots.txt.

Функция do_robots() использует: событие do_robotstxt (в начале функции) и фильтр robots_txt в конце (фильтрует содержание выводимой информации).

Функция устанавливает HTTP заголовок, поэтому использование её внутри HTML файла приведет к ошибке.

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


О файле robots.txt и правилах его создания, вы можете почитать в этой моей статье.

Хуки из функции:
do_robotstxt
robots_txt
Возвращает

Строку. Текст файла robots.txt

Использование

do_robots();

Примеры

#1. Создадим динамический robots.txt

Через файл темы functions.php. В этом случае создавать файл robots.txt физически не нужно. Добавим такой код в начало файла:

add_action( 'do_robotstxt', 'my_robotstxt' );
function my_robotstxt() {
	echo 'User-agent: *' . PHP_EOL;
	echo 'Disallow: /wp-admin/' . PHP_EOL;
	echo 'Disallow: /wp-includes/' . PHP_EOL;

	die; // обрываем работу PHP
}

Теперь, пройдя по ссылке http://site.ru/robots.txt мы получим такой текст:

add_filter('robots_txt', 'add_robotstxt');
function add_robotstxt($text){
	$text .= "Disallow: */comments";
	return $text;
}

Пройдя по ссылке http://site.ru/robots.txt получим примерно такой текст:

<?php
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' );
	if ( '0' == $public ) {
		$output .= "Disallow: /n";
	} else {
		$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 Robots.txt output.
	 * @param bool   $public Whether the site is considered "public".
	 */
	echo apply_filters( 'robots_txt', $output, $public );
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *