Как отключить автоматическое удаление спама в WordPress

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

Почему WordPress автоматически удаляет спам

По умолчанию WordPress хранит комментарии, помеченные как спам, в папке «Спам» в админке и удаляет их через 30 дней автоматически. Этот механизм реализован для освобождения базы данных от лишних записей и снижения нагрузки на сервер. Но иногда спам-фильтры ошибаются, и нужные комментарии попадают в спам. Если они автоматически удаляются, восстановить их будет невозможно.

Кроме того, если на сайте подключены плагины для борьбы со спамом, например Akismet или WPSpamShield, они могут дополнительно настраивать поведение с удалением спама, что требует особого внимания.

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

WordPress не предоставляет визуальных настроек для изменения времени хранения спама, но это можно сделать с помощью фильтра wp_scheduled_delete. По умолчанию WordPress запускает крон-задачу wp_scheduled_delete, которая удаляет устаревшие элементы из корзины, спама и временных записей.

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

function wpsocial_disable_spam_auto_delete( $delete ) {
    if ( isset( $delete['spam'] ) ) {
        // Отключаем удаление спама
        $delete['spam'] = 0;
    }
    return $delete;
}
add_filter( 'wp_scheduled_delete', 'wpsocial_disable_spam_auto_delete' );

Этот код можно добавить в файл functions.php вашей темы или в отдельный плагин. Он изменяет параметры задачи, устанавливая время хранения спама в 0 (то есть спам никогда не будет удаляться автоматически).

Настройка плагинов для управления спамом без автоматического удаления

Если вы используете популярные плагины для борьбы со спамом, например Akismet или Clearfy Pro, стоит проверить их настройки. Некоторые из них имеют собственные режимы удаления спама, которые могут конфликтовать со стандартным механизмом WordPress.

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

Создаем собственный виджет для управления спам-комментариями

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

class Wpsocial_Spam_Widget extends WP_Widget {
    public function __construct() {
        parent::__construct(
            'wpsocial_spam_widget',
            'Спам комментарии (WPSocial)',
            array( 'description' => 'Показывает количество комментариев в спаме и ссылку на админку' )
        );
    }
    public function widget( $args, $instance ) {
        $spam_count = wp_count_comments()->spam;
        echo $args['before_widget'];
        echo $args['before_title'] . 'Спам комментарии' . $args['after_title'];
        echo '<p>Всего спам-комментариев: ' . $spam_count . '</p>';
        echo '<p><a href="' . admin_url('edit-comments.php?comment_status=spam') . '">Перейти к спаму</a></p>';
        echo $args['after_widget'];
    }
}
add_action( 'widgets_init', function(){ register_widget( 'Wpsocial_Spam_Widget' ); } );

Добавив этот виджет в панель администратора или в сайдбар, вы всегда будете видеть актуальное количество спама и не пропустите нужный комментарий.

Как безопасно очищать спам вручную и автоматизировать процесс

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

Для удобства можно создать небольшую команду для WP-CLI, которая будет очищать спам по команде:

function wpsocial_clear_spam_wpcli() {
    if ( ! class_exists( 'WP_CLI' ) ) {
        return;
    }
    WP_CLI::add_command( 'wpsocial clear_spam', function() {
        global $wpdb;
        $wpdb->query( "DELETE FROM {$wpdb->comments} WHERE comment_approved = 'spam'" );
        WP_CLI::success( 'Спам комментарии удалены.' );
    });
}
add_action( 'init', 'wpsocial_clear_spam_wpcli' );

Запускать удаление можно через терминал командой wp wpsocial clear_spam. Это удобно для администраторов, которые работают с сервером напрямую.

Итоги и рекомендации

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

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

Как создать автопостинг в WordPress из социальных сетей
28.11.2025
WooCommerce: как автоматически удалять нерабочие вариации товаров
05.05.2026
Как создать собственный социальный фид в WordPress с примерами кода
20.12.2025
WP Social Login не работает: причины и решения
07.12.2025
Создать автоматические уведомления в WordPress по событиям
10.04.2026