В некоторых случаях на сайте на WordPress требуется сделать отдельные страницы приватными — чтобы доступ к ним имели только авторизованные пользователи или выбранная группа посетителей. В этой статье рассмотрим, как реализовать приватные страницы без лишних плагинов и с использованием популярных расширений, а также приведём примеры кода для гибкой настройки.
Почему стоит использовать приватный режим для страниц WordPress
Приватные страницы пригодятся для:
- Закрытых разделов сайта для клиентов или подписчиков.
- Тестирования новых материалов без публичного доступа.
- Внутренней документации или руководств для сотрудников.
По умолчанию WordPress позволяет устанавливать страницу как «Приватную», но это ограничено ролями редактора и администратора, и не всегда удобно для кастомных решений. Рассмотрим более гибкие способы.
Как установить приватный режим на уровне страницы с помощью кода
Если вы хотите, чтобы страница была видна только авторизованным пользователям, можно добавить следующий код в файл functions.php вашей темы или в отдельный плагин:
function wpabout_private_page_protection() {
if ( is_page() && ! is_user_logged_in() ) {
auth_redirect(); // Перенаправляет на страницу входа
}
}
add_action('template_redirect', 'wpabout_private_page_protection');Этот код блокирует доступ к любым страницам для неавторизованных пользователей, перенаправляя их на страницу входа.
Как сделать приватными только выбранные страницы
Если нужно закрыть доступ только к конкретным страницам, используйте ID страниц:
function wpabout_private_selected_pages() {
$private_pages = array(42, 87); // ID приватных страниц
if ( is_page($private_pages) && ! is_user_logged_in() ) {
auth_redirect();
}
}
add_action('template_redirect', 'wpabout_private_selected_pages');Таким образом, остальные страницы будут доступны всем, а указанные — только авторизованным.
Добавление кастомных ролей и ограничение доступа
Чтобы сделать приватные страницы доступными не всем зарегистрированным пользователям, а только определённым ролям, можно добавить проверку роли:
function wpabout_private_pages_by_role() {
$private_pages = array(42, 87);
if ( is_page($private_pages) && ! current_user_can('subscriber') ) {
wp_redirect(home_url('/')); // Перенаправляем на главную
exit;
}
}
add_action('template_redirect', 'wpabout_private_pages_by_role');Замените 'subscriber' на нужную роль, например 'customer' или кастомную роль, если она есть.
Использование плагинов для приватных страниц в WordPress
Если вы не хотите писать код, можно использовать плагины. Вот несколько популярных:
- Members — мощный плагин для управления ролями и доступом, позволяет делать страницы приватными для определённых ролей.
- WP Private Content Plus — простой плагин для ограничения доступа к страницам и постам.
- Clearfy Pro — в этом наборе инструментов есть функции для управления доступом и безопасности сайта. Подробнее на официальной странице Clearfy Pro.
Плагины позволяют гибко настраивать приватность без необходимости писать код, что удобно для непрофессионалов.
Создание собственного шорткода для ограничения контента
Можно сделать шорткод, который будет показывать содержимое только авторизованным пользователям. Пример кода:
function wpabout_private_content_shortcode($atts, $content = null) {
if ( is_user_logged_in() ) {
return $content;
} else {
return 'Этот контент доступен только авторизованным пользователям. Пожалуйста, войдите на сайт.';
}
}
add_shortcode('wpabout_private', 'wpabout_private_content_shortcode');Используйте в редакторе так: [wpabout_private]Приватный контент здесь[/wpabout_private]. Это удобно для частичного скрытия информации.
Пример комбинированного решения: приватные страницы + уведомление
Иногда полезно не просто перенаправлять, а показывать уведомление с формой входа на месте:
function wpabout_private_page_message() {
if ( is_page(42) && ! is_user_logged_in() ) {
wp_die(
'<h2>Доступ запрещён</h2><p>Для просмотра этой страницы необходимо войти на сайт.</p>' . wp_login_form(array('echo' => false))
);
}
}
add_action('template_redirect', 'wpabout_private_page_message');Этот код при попытке доступа неавторизованного пользователя к странице с ID 42 покажет форму входа прямо на месте.
Заключение по настройке приватных страниц в WordPress
Приватные страницы — эффективный инструмент для защиты контента. Выбор способа зависит от задачи и навыков:
- Простое ограничение — через стандартный статус страницы или базовый код.
- Гибкий контроль — через проверку ролей и ID страниц в functions.php.
- Без кода — использование плагинов Membership или Clearfy Pro с расширенными возможностями.
- Частичные ограничения — шорткод для скрытия только части контента.
Используйте подходящий вариант для вашего проекта, комбинируйте код и готовые решения. Если хотите добавить функционал с автоматическим модератором комментариев или системой опросов на приватных страницах, обратите внимание на плагины WPRemark и Quizle.