WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

is_single() WP 1.5

Проверяет находимся ли мы на странице записи (поста). Записи с типом attachment и page игнорируются. Условный тег.

В первом параметре можно указать конкретную запись/записи (посты) для проверки.

Используйте is_singular( $post_type ), когда нужно проверить страницу записи по её типу: post, page, attachment, а не по конкретному ID, имени и т.д.

Работает на основе: WP_Query::is_single()
1 раз = 0.00003с = очень быстро | 50000 раз = 0.02с = скорость света

Хуков нет.

Возвращает

true/false.

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

if( is_single( $post ) ){
	// ... 
}
$post(строка/число/массив)

ID, заголовок или ярлык записи (слаг), для того чтобы выявить конкретный пост.

Можно передать массив из нескольких чисел или строк.

Проверка поста идет в следующем порядке полей: ID, post_title, post_name.

Также, для древовидных записей, можно передать путь: books/my-book в этом случае поиск будет производиться функцией get_page_by_path().

По умолчанию: ''

Примеры

#1. Различные примеры использования:

is_single();
// Когда отображается любая отдельная запись (пост).

is_single(17);
// Сработает только, когда отображается запись с ID 17. Число можно указать строкой "17"

is_single('Музыка Фламенко');
// Сработает для поста с заголовком "Музыка Фламенко".

is_single('musika-flamenko');
// Сработает для поста со слагом "musika-flamenko".

is_single( array(17, 'musika-flamenko', 'Музыка Фламенко') );
// Сработает для подходящих постов. Добавлено в версии 2.5.

is_single('musika/flamenko');
// Сработает для древовидной записи со слагом flamenko, дочерней к записи со слагом musika.

#2 Проверка по ярлыку и кириллица

Если у вас на сайте не установлен плагин транслитерации ярлыков Cyr to Lat enhanced или ему подобный, то при публикации записи, она будет иметь кириллический ярлык преобразованный в кодированные символы, например слово "мой" будет выглядеть так: %D0%BC%D0%BE%D0%B9.

В результате проверка по кириллическому ярлыку работать не будет. Чтобы она работала нужно изменить ярлык с помощью sanitize_title():

is_single('моя-музыка'); // неправильно

is_single( sanitize_title('моя-музыка') ); // правильно

Заметки

  • Смотрите: is_page()
  • Смотрите: is_singular()
  • Global. WP_Query. $wp_query WordPress Query object.

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

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

Код is_single() WP 5.5.1

wp-includes/query.php
<?php
function is_single( $post = '' ) {
	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.' ), '3.1.0' );
		return false;
	}

	return $wp_query->is_single( $post );
}

Cвязанные функции

Из метки: Условные теги (типов страниц и запросов)

Еще из метки: Условные теги (все)

Еще из раздела: Запросы

Еще из тегов шаблона: Основные

13 комментов
Полезные 2 Все