В работе с WordPress часто возникает задача временно скрыть или полностью удалить страницу с сайта, но при этом сохранить данные в базе данных для возможного восстановления или аналитики. В этой статье мы рассмотрим несколько способов решения этой задачи, включая использование плагинов и собственных функций на PHP.
Почему важно не удалять страницу из базы данных
Удаление страницы через стандартный интерфейс WordPress переводит запись в корзину, а после очистки корзины — полностью удаляет запись из базы. Это может привести к потере важной информации, связанной с контентом, метаданными и внутренними ссылками.
Если вы планируете временно скрыть страницу, лучше использовать методы, которые позволят сохранять данные и при этом не показывать страницу посетителям.
Способы скрытия и удаления страниц без удаления из базы
1. Использование статуса записи (черновик, приватная)
WordPress поддерживает несколько статусов для записей и страниц:
- Опубликовано – страница видна всем;
- Черновик – страница скрыта от посетителей и поисковых систем;
- Приватная – страница доступна только администраторам и редакторам;
- В корзине – страница удалена, но может быть восстановлена.
Самый простой способ скрыть страницу – установить статус draft или private. Это можно сделать вручную в админке, либо программно.
Пример изменения статуса страницы программно
function wpmarket_set_page_status_draft($page_id) {
$post = array(
'ID' => $page_id,
'post_status' => 'draft'
);
wp_update_post($post);
}Вызов wpmarket_set_page_status_draft(123); переведет страницу с ID 123 в статус черновика, скрывая ее с сайта.
2. Использование плагинов для скрытия страниц
Если хочется удобного интерфейса и дополнительных возможностей, стоит обратить внимание на плагины:
- Clearfy Pro – среди прочих функций позволяет управлять видимостью страниц и записей;
- WPRemark – подходит если нужно скрывать страницы с отзывами или комментариями;
- Simple Page Restriction – бесплатный плагин для ограничения доступа к страницам;
- Post Status Notifier – помогает изменять и уведомлять при смене статуса страниц.
Плагины зачастую удобны, но иногда избыточны, если стоит задача именно программного контроля.
3. Массовое скрытие страниц по условию
В больших проектах может понадобиться скрыть сразу несколько страниц по определенному признаку, например, по шаблону, метке или категории.
Пример функции для массового перевода в черновики страниц с определенной меткой:
function wpmarket_hide_pages_by_tag($tag_slug) {
$args = array(
'post_type' => 'page',
'tag' => $tag_slug,
'posts_per_page' => -1
);
$pages = get_posts($args);
foreach($pages as $page) {
$post = array(
'ID' => $page->ID,
'post_status' => 'draft'
);
wp_update_post($post);
}
}Вызов wpmarket_hide_pages_by_tag('hidden'); скроет все страницы с тегом 'hidden'.
Внимание
Теги по умолчанию не поддерживаются для страниц, их нужно зарегистрировать, если хотите использовать этот способ:
function wpmarket_enable_tags_for_pages() {
register_taxonomy_for_object_type('post_tag', 'page');
}
add_action('init', 'wpmarket_enable_tags_for_pages');4. Использование фильтра на уровне шаблона для скрытия страниц
Еще один способ – не менять статус страницы, а программно перенаправлять посетителей или показывать 404.
Пример фильтра, который будет возвращать 404 для страницы с определенным ID:
function wpmarket_hide_page_redirect_404() {
if (is_page(123)) { // ID страницы
global $wp_query;
$wp_query->set_404();
status_header(404);
nocache_headers();
include(get_query_template('404'));
exit();
}
}
add_action('template_redirect', 'wpmarket_hide_page_redirect_404');Этот метод полезен, если нужно оставить страницу опубликованной, но не показывать ее никому.
5. Автоматическое удаление страниц с помощью WP-CLI
Для тех, кто предпочитает командную строку, WP-CLI предоставляет удобные команды для управления контентом.
Удаление страницы (перемещение в корзину):
wp post delete 123 --force=falseЕсли нужно сохранить страницу, но скрыть, можно менять статус:
wp post update 123 --post_status=draftWP-CLI позволяет автоматизировать массовые операции с контентом и интегрировать их в скрипты деплоя.
Выводы и рекомендации
Для временного скрытия страниц лучше использовать смену статуса записи на черновик или приватный. Это сохраняет все данные и не требует удаления из базы. Если нужно полностью удалить, но с возможностью восстановления — используйте корзину WordPress.
Для более сложных сценариев подходит программное управление статусами и фильтрация на уровне шаблонов. Также можно применять плагины, если не хочется писать код.
Советуем использовать функции с префиксом wpmarket_ для удобства поддержки и расширения вашего сайта на WordPress.