Как удалить пустую страницу в WordPress с помощью кода

Пустые страницы на сайте WordPress могут возникать по разным причинам: ошибки при создании, импорт данных, неактуальный контент или сбои в работе шаблона. Они не только ухудшают пользовательский опыт, но и могут негативно влиять на SEO. В этой статье мы рассмотрим, как программно находить и удалять пустые страницы с помощью кода, не прибегая к плагинам. Это особенно полезно при необходимости массовой очистки или автоматизации.

Почему появляются пустые страницы в WordPress и как их обнаружить

Пустые страницы — это записи типа «page» в базе данных WordPress, у которых отсутствует содержимое, заголовок или и то, и другое. Иногда они могут иметь только метаданные, но не отображать никакой полезной информации. Причины возникновения:

  • Ошибки пользователя при создании страниц.
  • Импорт из сторонних систем с некорректными данными.
  • Удаление контента из страниц, оставив пустой шаблон.
  • Сбои при работе плагинов или тем.

Для обнаружения таких страниц можно использовать простой WP_Query по типу записи и проверку содержимого. Например, пустая страница — это запись с пустым полем post_content и, возможно, пустым post_title.

Пример запроса для поиска пустых страниц

$args = [
    'post_type' => 'page',
    'posts_per_page' => -1,
    'post_status' => 'publish',
];
$query = new WP_Query($args);

foreach ($query->posts as $page) {
    if (empty(trim($page->post_content)) && empty(trim($page->post_title))) {
        // Страница пустая
    }
}

Удаление пустых страниц: автоматизация с помощью функции WPLink_ru_delete_empty_pages

Для удобства можно создать функцию, которая находит и удаляет пустые страницы. Ниже пример такой функции с комментариями.

function wplink_ru_delete_empty_pages() {
    $args = [
        'post_type' => 'page',
        'posts_per_page' => -1,
        'post_status' => ['publish', 'draft', 'pending'],
    ];
    $query = new WP_Query($args);
    $deleted_count = 0;

    foreach ($query->posts as $page) {
        $content = trim(strip_tags($page->post_content));
        $title = trim($page->post_title);

        if (empty($content) && empty($title)) {
            wp_delete_post($page->ID, true); // true — удаление без корзины
            $deleted_count++;
        }
    }
    return $deleted_count;
}

// Пример вызова функции
$removed = wplink_ru_delete_empty_pages();
echo "Удалено пустых страниц: " . $removed;

В этом коде мы используем wp_delete_post с параметром true, чтобы удалить страницы без возможности восстановления из корзины. Это подходит для массовой очистки.

Когда запускать удаление пустых страниц

Можно запускать функцию вручную в файле темы, плагина или через WP-CLI. Для автоматизации подойдёт хук по расписанию через WP Cron, например, раз в неделю. Это поможет поддерживать сайт в порядке без постоянного контроля.

Альтернативные способы: плагины для управления и очистки

Хотя мы рассмотрели кодовое решение, некоторые предпочитают использовать плагины. Например:

  • Clearfy — популярный плагин для оптимизации и очистки WordPress, который помогает находить и удалять лишние страницы и посты.
  • WPRemark — плагин для улучшения взаимодействия с пользователями, может помочь в выявлении неактивного и пустого контента.

Использование плагинов удобно, если вы не хотите писать код, но для точечной и быстрой очистки лучше всё же применять собственные скрипты.

Как предотвратить появление пустых страниц в будущем

Чтобы не столкнуться с проблемой пустых страниц снова, стоит:

  • Добавить проверку при создании или сохранении страницы, например, с помощью хуков save_post.
  • Использовать пользовательские типы записей с ограничениями.
  • Проверять импортируемые данные перед загрузкой.
  • Регулярно проводить аудит контента.

Пример простой проверки при сохранении страницы:

function wplink_ru_check_empty_page_before_save($post_id, $post, $update) {
    if ($post->post_type !== 'page') {
        return;
    }
    $content = trim(strip_tags($post->post_content));
    $title = trim($post->post_title);

    if (empty($content) && empty($title)) {
        // Отправим уведомление или отменим сохранение
        remove_action('save_post', 'wplink_ru_check_empty_page_before_save');
        wp_delete_post($post_id, true);
    }
}
add_action('save_post', 'wplink_ru_check_empty_page_before_save', 10, 3);

Этот код удалит пустые страницы сразу после сохранения, предотвращая их появление.

Как автоматизировать удаление старого контента в WordPress
27.03.2026
Как изменить URL для страниц WordPress с помощью функции wp_link_ru_change_page_url
08.12.2025
Как массово удалить или изменить атрибуты Title и Alt у изображений в WordPress
25.02.2026
Как удалить повторяющиеся вариации товара в WooCommerce
01.05.2026
Как установить приватные страницы в WordPress: плагины и код для ограничения доступа
21.03.2026