Как удалить удалённые комментарии в WordPress: практическое руководство

В процессе работы с WordPress часто возникает ситуация, когда в базе данных накапливаются удалённые комментарии. Они могут оставаться в базе как «спам» или «удалённые», занимая место и замедляя работу сайта. В этой статье мы подробно разберём, как эффективно удалить такие комментарии, используя как готовые плагины, так и собственные решения на PHP с примерами кода.

Почему важно удалять удалённые комментарии в WordPress

Удалённые комментарии — это те, которые были помечены как удалённые (в корзине) или как спам, но фактически остаются в базе данных. Они не отображаются на сайте, но продолжают занимать место в таблицах wp_comments и wp_commentmeta. Со временем их количество может достичь сотен и тысяч, что негативно скажется на скорости запросов к базе и на работе сайта в целом.

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

Кроме того, удаление удалённых комментариев поможет:

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

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

Первым делом нужно посмотреть, сколько таких комментариев сейчас хранится в базе. Для этого можно использовать SQL-запрос через PhpMyAdmin или консоль MySQL:

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

Значение comment_approved = 'trash' указывает на удалённые комментарии (корзина). Аналогично можно проверить комментарии со статусом «спам» через comment_approved = 'spam'.

Если количество таких записей велико (сотни и больше), стоит заняться их удалением.

Удаление удалённых комментариев с помощью плагинов WordPress

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

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

Чтобы очистить удалённые комментарии с помощью WP-Optimize:

  1. Установите и активируйте плагин.
  2. Перейдите в раздел WP-Optimize > Database.
  3. Отметьте пункт Удалить комментарии в корзине.
  4. Нажмите кнопку Run optimization.

Плагин удалит все комментарии, помеченные как удалённые.

Удаление удалённых комментариев через код: пример функции для wpset.ru

Для тех, кто предпочитает управлять сайтом через код и хочет встроить очистку в собственные скрипты или плагины, ниже пример функции на PHP. Она удаляет все комментарии со статусом «trash» и связанные с ними метаданные.

function wpset_delete_trashed_comments() {
    global $wpdb;

    // Получаем ID комментариев в корзине
    $trashed_comment_ids = $wpdb->get_col("SELECT comment_ID FROM {$wpdb->comments} WHERE comment_approved = 'trash'");

    if (empty($trashed_comment_ids)) {
        return 'Нет удалённых комментариев для удаления.';
    }

    // Преобразуем к строке для запроса
    $ids_string = implode(',', array_map('intval', $trashed_comment_ids));

    // Удаляем метаданные комментариев
    $wpdb->query("DELETE FROM {$wpdb->commentmeta} WHERE comment_id IN ($ids_string)");

    // Удаляем сами комментарии
    $wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_ID IN ($ids_string)");

    return 'Удалено комментариев: ' . count($trashed_comment_ids);
}

Использовать функцию можно, вызвав её в нужном месте, например, через административный интерфейс или WP-CLI.

Как добавить вызов функции в WP-CLI

WP-CLI — мощный инструмент для командной строки, с помощью которого можно запускать подобные операции без доступа к панели администратора.

if (defined('WP_CLI') && WP_CLI) {
    WP_CLI::add_command('wpset clean_trashed_comments', function() {
        $result = wpset_delete_trashed_comments();
        WP_CLI::success($result);
    });
}

После добавления этого кода в файл вашего плагина или темы, в консоли можно выполнить команду:

wp wpset clean_trashed_comments

и получить отчёт об удалении.

Удаление удалённых комментариев через WP Cron

Чтобы автоматизировать процесс очистки, можно настроить регулярное задание через WP Cron. Ниже пример добавления задачи, которая будет вызываться раз в неделю.

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

add_action('wpset_weekly_cleanup_trashed_comments', 'wpset_delete_trashed_comments');

Такой подход гарантирует, что база будет очищаться регулярно без вашего участия.

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

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

Сделать это можно через PhpMyAdmin или SQL-запрос:

OPTIMIZE TABLE wp_comments;

Оптимизация часто уменьшает размер базы и ускоряет доступ к данным.

Если вы предпочитаете автоматизировать, можно добавить оптимизацию в функцию очистки:

function wpset_optimize_comments_table() {
    global $wpdb;
    $wpdb->query('OPTIMIZE TABLE ' . $wpdb->comments);
    $wpdb->query('OPTIMIZE TABLE ' . $wpdb->commentmeta);
}

И вызывать эту функцию после удаления комментариев.

Заключение

Удалённые комментарии — это скрытый мусор в базе данных WordPress, который со временем может ухудшать производительность сайта. С помощью описанных выше методов — от плагинов до собственного кода и автоматизации — вы сможете эффективно управлять этим аспектом и поддерживать ваш сайт на wpset.ru в отличном техническом состоянии.

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

Как добавить проверку и очистку входящих данных в WordPress
27.03.2026
WooCommerce: автоматическое удаление отсутствующих вариаций товаров
29.05.2026
Как установить и настроить Redis кэш в WordPress
23.11.2025
Как удалить неактуальные transienty в WordPress и оптимизировать кэш
23.03.2026
Как удалить неиспользуемые таксономии из WordPress через код
25.02.2026