Функция IS_POST_TYPE_VIEWABLE() в WordPress 4.4.0

# Функция 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()

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *