WP_Query::is_single()publicWP 3.1.0

Determines whether the query is for an existing single post.

Works for any post type excluding pages.

If the $post parameter is specified, this function will additionally check if the query is for one of the Posts specified.

Метод класса: WP_Query{}

Хуков нет.

Возвращает

true|false. Whether the query is for an existing single post.

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

global $wp_query;
$wp_query->is_single( $post );
$post(int|строка|int[]|string[])
Post ID, title, slug, path, or array of such to check against.
По умолчанию: ''

Заметки

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

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

Код WP_Query::is_single() WP 6.4.3

public function is_single( $post = '' ) {
	if ( ! $this->is_single ) {
		return false;
	}

	if ( empty( $post ) ) {
		return true;
	}

	$post_obj = $this->get_queried_object();
	if ( ! $post_obj ) {
		return false;
	}

	$post = array_map( 'strval', (array) $post );

	if ( in_array( (string) $post_obj->ID, $post, true ) ) {
		return true;
	} elseif ( in_array( $post_obj->post_title, $post, true ) ) {
		return true;
	} elseif ( in_array( $post_obj->post_name, $post, true ) ) {
		return true;
	} else {
		foreach ( $post as $postpath ) {
			if ( ! strpos( $postpath, '/' ) ) {
				continue;
			}
			$postpath_obj = get_page_by_path( $postpath, OBJECT, $post_obj->post_type );

			if ( $postpath_obj && ( $postpath_obj->ID == $post_obj->ID ) ) {
				return true;
			}
		}
	}
	return false;
}