Как удалить и избавиться от пустых записей в базе данных WordPress

Пустые записи в WordPress — это записи, у которых нет содержимого, заголовка или они являются черновиками, которые уже не нужны. Со временем таких записей может накопиться достаточно много, что замедляет работу сайта и увеличивает размер базы данных. В этой статье рассмотрим, как эффективно найти и удалить пустые записи, используя SQL-запросы, WP CLI и плагины, а также создадим простой плагин для автоматизации этой задачи.

Почему важно удалять пустые записи в WordPress

Пустые записи — это мусор в базе данных, который затрудняет работу с контентом и снижает производительность сайта. Особенно это важно для крупных проектов с большим количеством контента и пользователей. Удаление таких записей помогает:

  • Уменьшить размер базы данных;
  • Ускорить запросы к базе и загрузку страниц;
  • Сделать админ-панель чище и удобнее;
  • Избежать возможных конфликтов с SEO и индексацией.

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

Как найти пустые записи в базе данных WordPress с помощью SQL-запроса

Для начала полезно понять, что именно считать пустой записью. Обычно это записи, у которых:

  • Пустой или NULL заголовок (post_title);
  • Пустой или NULL контент (post_content);
  • Статус записи — draft или auto-draft;
  • Тип записи — post, page или кастомный тип.

Пример запроса для поиска таких записей:

SELECT ID, post_title, post_status, post_type
FROM wp_posts
WHERE (post_title = '' OR post_title IS NULL)
  AND (post_content = '' OR post_content IS NULL)
  AND post_status IN ('draft', 'auto-draft')
  AND post_type IN ('post', 'page');

Этот запрос покажет пустые записи, которые можно удалять. Чтобы удалить их, используйте:

DELETE FROM wp_posts
WHERE (post_title = '' OR post_title IS NULL)
  AND (post_content = '' OR post_content IS NULL)
  AND post_status IN ('draft', 'auto-draft')
  AND post_type IN ('post', 'page');

ВАЖНО: Перед выполнением DELETE-запросов обязательно сделайте резервную копию базы данных.

Удаление пустых записей через WP CLI

WP CLI — мощный инструмент для управления WordPress из командной строки. Для удаления пустых записей можно использовать следующий скрипт на Bash:

wp post delete $(wp post list --post_type=post,page --post_status=draft,auto-draft --field=ID --format=ids) --force

Этот однострочник сначала получает ID всех записей с нужным статусом и типом, а затем удаляет их принудительно. Если нужно фильтровать именно пустые по содержимому записи, то придется написать более сложный PHP-скрипт или использовать SQL-запросы.

Создаем плагин для автоматического удаления пустых записей в WordPress

Чтобы автоматизировать процесс и запускать его из админки, можно создать простой плагин. Ниже пример минимального плагина wptem_delete_empty_posts:

<?php
/**
 * Plugin Name: WPTem Delete Empty Posts
 * Description: Удаляет пустые записи с пустым заголовком и контентом и статусом draft или auto-draft.
 * Version: 1.0
 * Author: WPTem
 */

if (!defined('ABSPATH')) {
    exit;
}

function wptem_delete_empty_posts_run() {
    global $wpdb;
    $table = $wpdb->posts;
    $sql = $wpdb->prepare(
        "DELETE FROM $table WHERE (post_title = '' OR post_title IS NULL) 
        AND (post_content = '' OR post_content IS NULL) 
        AND post_status IN ('draft', 'auto-draft') 
        AND post_type IN ('post', 'page')"
    );
    $result = $wpdb->query($sql);
    return $result;
}

function wptem_delete_empty_posts_admin_page() {
    if (isset($_POST['wptem_delete_empty_posts'])) {
        $deleted = wptem_delete_empty_posts_run();
        echo '<div class="updated notice"><p>Удалено пустых записей: ' . intval($deleted) . '</p></div>';
    }
    ?>
    <div class="wrap">
        <h1>Удаление пустых записей</h1>
        <form method="post">
            <input type="hidden" name="wptem_delete_empty_posts" value="1" />
            <p><input type="submit" class="button button-primary" value="Удалить пустые записи" /></p>
        </form>
    </div>
    <?php
}

function wptem_delete_empty_posts_admin_menu() {
    add_submenu_page('tools.php', 'Удаление пустых записей', 'Удаление пустых записей', 'manage_options', 'wptem-delete-empty-posts', 'wptem_delete_empty_posts_admin_page');
}
add_action('admin_menu', 'wptem_delete_empty_posts_admin_menu');

// Можно добавить cron-задачу для автоматизации, если нужно

Данный плагин добавит в меню «Инструменты» в админке пункт, где можно одним кликом удалить пустые записи. Его можно доработать для работы с кастомными типами и статусами.

Полезные плагины для очистки базы данных и работы с записями

Если не хотите писать код, есть готовые решения:

  • Clearfy Pro — позволяет оптимизировать базу, удалять мусорные записи и многое другое;
  • WPRemark — мощный инструмент для работы с комментариями и записями;
  • Плагин WP-Optimize — бесплатный и популярный для очистки базы;
  • Бесплатные плагины для управления черновиками, например, Draft Cleanup.

Используйте эти инструменты аккуратно и всегда делайте бэкап.

Рекомендации по профилактике появления пустых записей

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

  • Ограничить автоматическое создание черновиков, например, отключить auto-draft;
  • Использовать пользовательские уведомления, предупреждающие о публикации пустых записей;
  • Проверять работу плагинов, которые создают записи автоматически;
  • Регулярно чистить базу данных, используя WP CLI или плагины.

Например, чтобы отключить авто-сохранение пустых черновиков, можно добавить код в functions.php темы:

function wptem_disable_autosave_empty_post( $post_id ) {
    $post = get_post( $post_id );
    if ( empty( $post->post_title ) && empty( $post->post_content ) ) {
        wp_delete_post( $post_id, true );
    }
}
add_action( 'autosave_post', 'wptem_disable_autosave_empty_post' );

Выводы и советы

Удаление пустых записей — важная часть технической поддержки WordPress-сайта. Используйте SQL-запросы для точечной работы, WP CLI для быстрой массовой очистки и собственные плагины для удобства и автоматизации. Не забывайте про резервные копии и тестирование изменений на тестовом сайте.

Для более глубокой оптимизации базы рекомендуем обратить внимание на Clearfy Pro — это удобный инструмент с большим набором функций для очистки и ускорения WordPress.

Как сделать автоматический импорт товара из Excel в WordPress
01.03.2026
Как создать свой плагин в WordPress: практическое руководство
28.11.2025
Как сделать автоматический rollback обновлений WordPress при ошибках
11.02.2026
Как избежать конфликтов при использовании скриншотов в WordPress
20.03.2026
Как использовать AJAX в WordPress для отправки формы без перезагрузки страницы
11.01.2026