Иногда возникает задача временно убрать страницу из публичного доступа на сайте WordPress, но при этом сохранить её для дальнейшего использования. Удалять страницу не всегда удобно, особенно если там есть важный контент или настройки. В этой статье мы подробно разберём, как удалить или спрятать страницы без удаления из админки, используя как готовые плагины, так и собственные функции.
Почему нужно спрятать страницу вместо удаления
Удаление страницы ведёт к потере контента, настроек SEO, ссылок, и требует повторного создания при необходимости. В то время как временное скрытие позволяет:
- Сохранить контент и метаданные.
- Управлять доступом к странице.
- Избегать ошибок 404 и потерю трафика.
- Проводить тестирование и редизайн без удаления.
Эти преимущества важны для сайтов с большим объёмом контента и регулярным обновлением.
Как спрятать страницу с помощью статуса публикации
Самый простой способ — изменить статус страницы с publish на private или draft. Это можно сделать в админке редактирования страницы:
- Черновик (Draft) — страница доступна только администраторам и редакторам, не видна на сайте.
- Приватная (Private) — видна только авторизованным пользователям с соответствующими правами.
Однако, если требуется спрятать страницу от всех, включая админов, или сделать её доступной только под паролем, нужно использовать другие методы.
Использование плагинов для скрытия страниц
Для более гибкого управления доступом и видимостью страниц можно использовать плагины. Рассмотрим несколько популярных вариантов.
1. Post Visibility
Плагин позволяет управлять видимостью записей и страниц, скрывая их от неавторизованных пользователей или определённых ролей. Поддерживает массовое изменение и интеграцию с меню.
2. Clearfy Pro
Этот плагин предлагает множество инструментов оптимизации и безопасности, включая скрытие страниц и постов от поисковых систем и пользователей без удаления.
3. Password Protected
Простой плагин, который защищает все страницы сайта или отдельные URL паролем, эффективно скрывая их от посторонних.
Спрятать страницу программно: пример функции для фильтрации запроса
Если вы предпочитаете не использовать плагины, можно добавить код в файл functions.php вашей темы или в собственный плагин. Пример ниже показывает, как исключить страницу с ID 123 из публичного запроса, чтобы она не отображалась на сайте, но оставалась в админке.
function wpdirect_exclude_page_from_frontend($query) {
if (!is_admin() && $query->is_main_query()) {
// ID страницы, которую нужно спрятать
$hidden_page_id = 123;
// Исключаем страницу из всех запросов на фронтенде
$query->set('post__not_in', array($hidden_page_id));
}
}
add_action('pre_get_posts', 'wpdirect_exclude_page_from_frontend');
Этот код исключит страницу из списков и архивов, но если человек введёт прямой URL, страница будет доступна. Чтобы полностью запретить просмотр, можно добавить перенаправление.
Блокировка доступа по URL с редиректом
Для полного скрытия страницы можно сделать редирект посетителей с её URL на главную или другую страницу:
function wpdirect_redirect_hidden_page() {
if (is_page(123) && !current_user_can('manage_options')) { // только не для админов
wp_redirect(home_url());
exit;
}
}
add_action('template_redirect', 'wpdirect_redirect_hidden_page');
Такой подход гарантирует, что никто кроме администраторов не увидит содержимое скрытой страницы.
Как убрать страницу из меню WordPress
Если страница есть в навигационном меню, её нужно убрать, чтобы она не была видна пользователям. Сделать это можно вручную через Внешний вид > Меню. Но если меню генерируется динамически, можно применить фильтр:
function wpdirect_exclude_page_from_menu($items, $menu, $args) {
foreach ($items as $key => $item) {
if ($item->object_id == 123) { // ID скрываемой страницы
unset($items[$key]);
}
}
return $items;
}
add_filter('wp_get_nav_menu_items', 'wpdirect_exclude_page_from_menu', 10, 3);
Это исключит страницу из всех меню, где она присутствует.
Выводы и рекомендации
Спрятать или временно удалить страницу без удаления — задача, решаемая разными способами в зависимости от целей:
- Для простого скрытия — меняйте статус публикации.
- Для управления доступом — используйте плагины типа Post Visibility или Clearfy Pro (ссылка на Clearfy Pro).
- Для тонкой настройки — используйте фильтры WordPress и функции редиректа, как показано в коде выше.
Такой подход поможет сохранить контент и SEO-показатели и при этом контролировать видимость страниц на сайте.