is_post_type_viewable()WP 4.4.0

Определяет является ли указанный тип записи публичным (доступным для просмотра во внешней части сайта). Указывать нужно объект типа записи.

Проверяется параметр publicly_queryable для произвольных типов записей и параметр public для встроенных типов записей, таких как post и page.

Использует глобальную переменную $post_type_object.

1 раз — 0.000015 сек (очень быстро) | 50000 раз — 0.04 сек (скорость света) | PHP 7.0.5, WP 4.4.2
Хуки из функции

Возвращает

true|false. true - если тип записи просматриваемый и false в противном случае.

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

is_post_type_viewable( $post_type );
$post_type(строка/объект) (обязательный)
Объект типа записи. С версии 4,5 можно указывать название типа записи. Название типа записи.

Примеры

0

#1 Проверим является ли тип записи просматриваемым

Допустим есть тип записи myposts и нам нужно проверить могут ли обычные посетители видеть этот тип записи.

$obj = get_post_type_object( 'myposts' );
if( is_post_type_viewable($obj) )
	echo 'просматриваемый тип записи';
else
	echo 'внутренний тип записи';

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

С версии 4.4.0 Введена.
С версии 4.5.0 Added the ability to pass a post type name in addition to object.
С версии 4.6.0 Converted the $post_type parameter to accept a WP_Post_Type object.
С версии 5.9.0 Added is_post_type_viewable to filter the result.

Код is_post_type_viewable() WP 6.1.1

function is_post_type_viewable( $post_type ) {
	if ( is_scalar( $post_type ) ) {
		$post_type = get_post_type_object( $post_type );

		if ( ! $post_type ) {
			return false;
		}
	}

	if ( ! is_object( $post_type ) ) {
		return false;
	}

	$is_viewable = $post_type->publicly_queryable || ( $post_type->_builtin && $post_type->public );

	/**
	 * Filters whether a post type is considered "viewable".
	 *
	 * The returned filtered value must be a boolean type to ensure
	 * `is_post_type_viewable()` only returns a boolean. This strictness
	 * is by design to maintain backwards-compatibility and guard against
	 * potential type errors in PHP 8.1+. Non-boolean values (even falsey
	 * and truthy values) will result in the function returning false.
	 *
	 * @since 5.9.0
	 *
	 * @param bool         $is_viewable Whether the post type is "viewable" (strict type).
	 * @param WP_Post_Type $post_type   Post type object.
	 */
	return true === apply_filters( 'is_post_type_viewable', $is_viewable, $post_type );
}