# Функция IS_POST_TYPE_VIEWABLE() │ WP 4.4.0
Функция **is_post_type_viewable()** определяет, доступен ли тип записи для просмотра. Это позволяет проверить, может ли обычный пользователь просматривать записи определенного типа.
Для встроенных типов записей, таких как "посты" и "страницы", будет учитываться значение 'public'. Для остальных типов используется значение 'publicly_queryable'.
### Параметры производительности
- 1 вызов — 0.000015 сек (очень быстро)
- 50000 вызовов — 0.04 сек (практически мгновенно)
- PHP 7.0.5, WP 4.4.2
## Хуки функции
Функция **is_post_type_viewable** предоставляет возможность использовать хуки.
## Возвращаемое значение
Функция возвращает true или false в зависимости от того, считается ли тип записи доступным для просмотра.
## Использование
```php
is_post_type_viewable( $post_type );
Параметры
- $post_type (string|WP_Post_Type) — обязательный параметр. Название типа записи или объект типа записи.
Примеры
Пример 1: Проверка, доступен ли тип записи
Предположим, у нас есть тип записи myposts, и нам нужно узнать, смогут ли обычные пользователи видеть этот тип записи.
$obj = get_post_type_object( 'myposts' );
if( is_post_type_viewable( $obj ) ){
echo 'Тип записи доступен для просмотра';
} else {
echo 'Внутренний тип записи';
}
История изменений
- С версии 4.4.0 — Функция была введена.
- С вер��ии 4.5.0 — Добавлена возможность передавать название типа записи.
- С версии 4.6.0 — Параметр
$post_typeтеперь принимает объект WP_Post_Type. - С версии 5.9.0 — Добавлен фильтр для результата функции.
Исходный код функции IS_POST_TYPE_VIEWABLE
Функция реализована в файле wp-includes/post.php. Вот её код:
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 );
/**
* Фильтрация: считается ли тип записи "доступным для просмотра".
*
* Возвращаемое значение должно быть логическим типом,
* чтобы функция is_post_type_viewable() всегда возвращала boolean.
* Это сделано для обеспечения обратной совместимости и защиты
* от потенциальных ошибок в PHP 8.1+. Нелогические значения (даже ложные и истинные значения)
* приведут к тому, что функция вернет false.
*
* @since 5.9.0
*
* @param bool $is_viewable Является ли тип записи "доступным" (строгий тип).
* @param WP_Post_Type $post_type Объект типа записи.
*/
return true === apply_filters( 'is_post_type_viewable', $is_viewable, $post_type );
}
Связанные функции
-
Кастомные типы записей (Post Type):
add_post_type_support()get_post_type()get_post_type_object()get_post_types()is_post_type_hierarchical()post_type_exists()post_type_supports()register_post_type()remove_post_type_support()set_post_type()unregister_post_type()WP_Post_Type()
-
Кастомные типы:
get_post_permalink()get_post_type_archive_link()get_the_post_type_description()is_post_type_archive()post_type_archive_title()