WordPress как на ладони
rgbcode is looking for WordPress developers.

is_single()WP 1.5.0

Проверяет находимся ли мы на странице поста (записи любого типа). Записи с типом 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().

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

Примеры

0

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

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

is_single( '17' );
is_single( 17 );
// Сработает только, когда отображается запись с ID 17.

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

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

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

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

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

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

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

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

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

#3 Добавим файл стилей CSS для любой отдельной страницы Post

if( is_single() ){
	wp_enqueue_style( 'handle', 'path/to/cssfile.css' );
}

Заметки

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

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

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

Код is_single() WP 6.6.2

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 );
}
6 комментариев
    Войти