Как удалить удалённые комментарии из базы данных WordPress

Почему в базе данных WordPress остаются удалённые комментарии

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

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

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

Как найти удалённые комментарии в базе данных WordPress

В WordPress все комментарии хранятся в таблице wp_comments (префикс wp_ может отличаться). Статусы комментариев определяются в колонке comment_approved:

  • 0 — комментарий ожидает модерации;
  • 1 — одобренный комментарий;
  • spam — помечен как спам;
  • trash — удалённый комментарий (попал в корзину).

Удалённые комментарии не удаляются из таблицы, а просто имеют статус trash. Чтобы проверить количество таких комментариев, можно выполнить SQL-запрос:

SELECT COUNT(*) FROM wp_comments WHERE comment_approved = 'trash';

Если число велико, это повод для очистки.

Удаление удалённых комментариев через SQL-запрос

Для полной очистки удалённых комментариев из базы данных можно использовать следующий SQL-запрос:

DELETE FROM wp_comments WHERE comment_approved = 'trash';

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

Если в вашей базе есть связанные метаданные комментариев в таблице wp_commentmeta, то после удаления комментариев нужно удалить и связанные записи:

DELETE cm FROM wp_commentmeta cm LEFT JOIN wp_comments c ON cm.comment_id = c.comment_ID WHERE c.comment_ID IS NULL;

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

Автоматизация удаления удалённых комментариев с помощью PHP-функции для wp-blog.ru

Чтобы автоматизировать процесс удаления удалённых комментариев, можно создать функцию в файле functions.php вашей темы или в собственном плагине. Пример функции с префиксом wpblogru_:

function wpblogru_delete_trashed_comments() {
    global $wpdb;
    // Удаляем комментарии в корзине
    $deleted = $wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_approved = 'trash'");
    if ( $deleted !== false ) {
        // Удаляем связанные метаданные
        $wpdb->query("DELETE cm FROM {$wpdb->commentmeta} cm LEFT JOIN {$wpdb->comments} c ON cm.comment_id = c.comment_ID WHERE c.comment_ID IS NULL");
        return $deleted;
    }
    return 0;
}

Вы можете вызвать эту функцию вручную или настроить крон-задачу для регулярного вызова, например, с помощью wp_cron.

Пример добавления крон-задачи для периодической очистки

Добавим событие, выполняемое раз в неделю:

function wpblogru_schedule_weekly_comment_cleanup() {
    if ( ! wp_next_scheduled( 'wpblogru_weekly_comment_cleanup_hook' ) ) {
        wp_schedule_event( time(), 'weekly', 'wpblogru_weekly_comment_cleanup_hook' );
    }
}
add_action( 'wp', 'wpblogru_schedule_weekly_comment_cleanup' );

add_action( 'wpblogru_weekly_comment_cleanup_hook', 'wpblogru_delete_trashed_comments' );

Так вы гарантируете, что удалённые комментарии будут очищаться автоматически, не занимая место в базе.

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

Если вы не хотите использовать SQL-запросы или писать код, можно воспользоваться плагинами, которые помогают очистить базу данных:

  • WP-Optimize — популярный плагин для оптимизации базы, который умеет очищать корзину комментариев;
  • Advanced Database Cleaner — позволяет выбирать, какие данные удалить, включая удалённые комментарии;
  • Delete Comments — специализированный плагин для управления и массового удаления комментариев.

Все они предоставляют удобный интерфейс и снижают риск ошибок при работе с базой.

Профилактика накопления удалённых комментариев

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

  • Регулярно проводить очистку корзины комментариев вручную или автоматизировать процесс через крон;
  • Использовать антиспам-фильтры, чтобы уменьшить количество нежелательных комментариев;
  • Ограничить время хранения удалённых комментариев в корзине с помощью программного кода или плагинов;
  • Следить за плагинами, которые могут создавать избыточные записи в базе.

Например, для автоматического удаления комментариев из корзины старше 30 дней можно добавить следующий код:

function wpblogru_auto_delete_old_trashed_comments() {
    global $wpdb;
    $days = 30;
    $wpdb->query( $wpdb->prepare(
        "DELETE FROM {$wpdb->comments} WHERE comment_approved = 'trash' AND comment_date < %s",
        date( 'Y-m-d H:i:s', strtotime("-{$days} days") )
    ) );
}
add_action( 'wp_scheduled_delete', 'wpblogru_auto_delete_old_trashed_comments' );

Этот хук wp_scheduled_delete вызывается WordPress для автоматической очистки мусора.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как сделать уникальный meta-заголовок для каждого поста в WordPress
06.04.2026
Как использовать хук pre_get_posts для фильтрации записей в WordPress
04.03.2026
Как использовать метаданные для улучшения поисковой оптимизации WordPress
27.01.2026
Как удалить неиспользуемые мета данные в WordPress для оптимизации базы данных
24.01.2026
Как удалить и отключить Emoji в WordPress для ускорения сайта
30.03.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее