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

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

Зачем нужна автоматическая очистка старых комментариев

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

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

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

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

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

Добавление страницы настроек

В файле вашего плагина или темы добавьте следующий код для регистрации страницы настроек:

add_action('admin_menu', 'wpstandart_add_comment_cleanup_page');
function wpstandart_add_comment_cleanup_page() {
    add_options_page(
        'Очистка старых комментариев',
        'Очистка комментариев',
        'manage_options',
        'wpstandart-comment-cleanup',
        'wpstandart_render_comment_cleanup_page'
    );
}

function wpstandart_render_comment_cleanup_page() {
    ?>
    <div class="wrap">
        <h1>Очистка старых комментариев</h1>
        <form method="post" action="options.php">
            <?php
            settings_fields('wpstandart_comment_cleanup_group');
            do_settings_sections('wpstandart-comment-cleanup');
            submit_button();
            ?>
        </form>
    </div>
    <?php
}

Этот код создаст страницу настроек в разделе "Настройки".

Регистрация настройки

Далее добавим регистрацию настройки и поле для ввода количества дней:

add_action('admin_init', 'wpstandart_register_comment_cleanup_settings');
function wpstandart_register_comment_cleanup_settings() {
    register_setting('wpstandart_comment_cleanup_group', 'wpstandart_comment_cleanup_days', [
        'type' => 'integer',
        'sanitize_callback' => 'absint',
        'default' => 30
    ]);

    add_settings_section(
        'wpstandart_comment_cleanup_section',
        'Настройки удаления комментариев',
        function() {
            echo '<p>Укажите количество дней, после которых комментарии будут автоматически удаляться.</p>';
        },
        'wpstandart-comment-cleanup'
    );

    add_settings_field(
        'wpstandart_comment_cleanup_days',
        'Удалять комментарии старше (дней)',
        function() {
            $value = get_option('wpstandart_comment_cleanup_days', 30);
            echo '<input type="number" name="wpstandart_comment_cleanup_days" value="'.esc_attr($value).'" min="1" />';
        },
        'wpstandart-comment-cleanup',
        'wpstandart_comment_cleanup_section'
    );
}

Теперь в настройках можно указать целое число дней.

Автоматическое удаление комментариев по расписанию

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

Регистрация события WP-Cron

add_action('wpstandart_daily_comment_cleanup', 'wpstandart_delete_old_comments');

function wpstandart_activate_comment_cleanup_cron() {
    if (!wp_next_scheduled('wpstandart_daily_comment_cleanup')) {
        wp_schedule_event(time(), 'daily', 'wpstandart_daily_comment_cleanup');
    }
}
add_action('wp', 'wpstandart_activate_comment_cleanup_cron');

Этот код активирует ежедневное событие.

Удаление старых комментариев

Теперь напишем функцию, которая будет удалять комментарии старше указанного количества дней:

function wpstandart_delete_old_comments() {
    $days = get_option('wpstandart_comment_cleanup_days', 30);
    if (!$days) {
        return; // Если настройка не задана, ничего не делаем
    }

    global $wpdb;
    $date_threshold = date('Y-m-d H:i:s', strtotime("-{$days} days"));

    // Получим ID комментариев старше даты
    $old_comments = $wpdb->get_col($wpdb->prepare(
        "SELECT comment_ID FROM {$wpdb->comments} WHERE comment_date < %s",
        $date_threshold
    ));

    if (empty($old_comments)) {
        return; // Нет старых комментариев
    }

    foreach ($old_comments as $comment_id) {
        wp_delete_comment($comment_id, true); // Удаляем комментарий с мета-данными
    }
}

Таким образом, функция получает список старых комментариев и удаляет их.

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

Если вы хотите не писать код, а воспользоваться готовым решением, обратите внимание на плагин Auto Delete Comments. Он позволяет настроить автоматическое удаление комментариев по возрасту и статусу, а также исключения. Для интеграции с настройками вашего сайта можно расширить его функционал.

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

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

Удаление комментариев напрямую влияет на данные сайта, поэтому:

  • Всегда делайте резервные копии базы данных перед активацией автоматического удаления.
  • Проверяйте настройки и тестируйте код на тестовой среде.
  • Оптимизируйте запросы и не запускайте удаление слишком часто — раз в сутки достаточно.
  • Убедитесь, что WP-Cron работает корректно на вашем хостинге, иначе задачи могут не запускаться.

Выводы по реализации

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

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

Использование хука WooCommerce 'woocommerce_order_status_changed' для расширения функционала
10.05.2026
Как создать автоматическое сохранение данных в WordPress
02.12.2025
Как установить лимит публикации постов в WordPress
27.02.2026
Как установить ограничения на регистрацию пользователей в WordPress
02.03.2026
Как создать автоматическую публикацию постов в WordPress с использованием WP-Cron
25.03.2026