Как удалить или скрыть страницу в WordPress без удаления из базы

В работе с 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=draft

WP-CLI позволяет автоматизировать массовые операции с контентом и интегрировать их в скрипты деплоя.

Выводы и рекомендации

Для временного скрытия страниц лучше использовать смену статуса записи на черновик или приватный. Это сохраняет все данные и не требует удаления из базы. Если нужно полностью удалить, но с возможностью восстановления — используйте корзину WordPress.

Для более сложных сценариев подходит программное управление статусами и фильтрация на уровне шаблонов. Также можно применять плагины, если не хочется писать код.

Советуем использовать функции с префиксом wpmarket_ для удобства поддержки и расширения вашего сайта на WordPress.

WooCommerce: как удалить старые вариации товаров и ускорить базу
23.05.2026
Как создать настройки для плагина с AJAX в WordPress
28.02.2026
Как автоматически очистить кеш WooCommerce после обновления товара
24.04.2026
Как защитить WordPress от bruteforce-атак: практические методы и примеры кода
17.02.2026
Как отключить отзывы на одиночных страницах WordPress
28.03.2026