is_sitemap()WP 7.1.0

Определяет, относится ли текущий запрос к XML-карте сайта WordPress.

Проверяет индекс карты сайта и карты отдельных провайдеров.

Запросы XSL-стилей карты сайта не учитываются - /wp-sitemap.xsl и /wp-sitemap-index.xsl.

Условный тег работает только после разбора основного запроса - см wp(). При раннем вызове функция выдаст предупреждение и вернёт false.

Работает на основе: WP_Query::is_sitemap()

Хуков нет.

Возвращает

true|false.

  • true — запрос относится к XML-карте сайта.
  • false — запрос не относится к карте сайта или основной запрос ещё не создан.

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

if ( is_sitemap() ) {
	// ваш код для карты сайта
}

Примеры

#1 Проверка запроса XML-карты сайта

Это просто демонстрационный пример, который показывает, как для карты сайта добавить свой кастомный HTTP-заголовок.

add_action( 'template_redirect', 'wp_kama_handle_sitemap_request' );

function wp_kama_handle_sitemap_request() {
	if ( ! is_sitemap() ) {
		return;
	}

	header( 'X-WP-Sitemap: 1' );
}

#2 Проверка XML-карты сайта и её XSL-стилей

Учитывает XML-карты, а также запросы /wp-sitemap.xsl и /wp-sitemap-index.xsl.

add_action( 'template_redirect', 'wp_kama_handle_all_sitemap_requests' );

function wp_kama_handle_all_sitemap_requests() {
	$is_stylesheet = (bool) get_query_var( 'sitemap-stylesheet' );

	if ( ! is_sitemap() && ! $is_stylesheet ) {
		return;
	}

	header( 'X-WP-Sitemap: 1' );
}

Заметки

  • Global. WP_Query. $wp_query WordPress Query object.

Список изменений

С версии 7.1.0 Введена.

Код is_sitemap() WP 7.1

function is_sitemap(): bool {
	global $wp_query;

	if ( ! isset( $wp_query ) ) {
		_doing_it_wrong( __FUNCTION__, __( 'Conditional query tags do not work before the query is run. Before then, they always return false.' ), '7.1.0' );
		return false;
	}

	return $wp_query->is_sitemap();
}