Описание is_post_type_viewable
— Filter
Хук is_post_type_viewable позволяет изменить логику проверки доступности произвольных типов записей. Он срабатывает при проверке, видим ли данный тип записи для текущего пользователя и может быть использован для управления доступом к контенту в зависимости от пользовательских ролей и прав
Примеры использования
Пример ограничения доступа к произвольному типу записи для определенных ролей:
add_filter('is_post_type_viewable', function($is_viewable, $post_type) {
if ($post_type === 'custom_type' && !current_user_can('manage_options')) {
return false;
}
return $is_viewable;
}, 10, 2);
В этом примере мы запрещаем доступ к произвольному типу записи ‘custom_type’ для пользователей, не обладающих правами администратора
Пример изменения доступности стандартного типа записи ‘page’:
add_filter('is_post_type_viewable', function($is_viewable, $post_type) {
if ($post_type === 'page' && !is_user_logged_in()) {
return false;
}
return $is_viewable;
}, 10, 2);
Здесь мы запрещаем доступ к страницам для незарегистрированных пользователей
Пример изменения доступности произвольного типа записи в зависимости от даты публикации:
add_filter('is_post_type_viewable', function($is_viewable, $post_type) {
if ($post_type === 'event' && strtotime(get_the_date()) > time()) {
return false;
}
return $is_viewable;
}, 10, 2);
В этом примере мы запрещаем просмотр событий, которые ещё не наступили
— Лучшие практики
– Использование
Используйте этот хук, когда необходимо управлять доступом к произвольным типам записей на основе прав пользователей
– Производительность
Хук срабатывает только в контексте проверки доступа, поэтому влияние на производительность минимально
– Предупреждения
Убедитесь, что изменения не мешают нормальной работе сайта и не ограничивают доступ к важному контенту
Альтернативы
Тип: action
Этот хук позволяет изменить запрос к базе данных перед его выполнением и может использоваться для фильтрации постов по различным критериям
Используйте его, если необходимо более гибкое управление выборкой записей