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

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

Почему важно отключать комментарии на старых постах

Комментарии — это отличный способ взаимодействия с аудиторией, однако на старых записях они часто превращаются в источник спама и нерелевантных сообщений. Отключение комментариев на таких публикациях помогает:

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

Рассмотрим, как реализовать это технически.

Отключение комментариев программно через functions.php

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

function journalx_disable_comments_on_old_posts() {
    $days = 180; // период в днях
    $date_query = array(
        'column' => 'post_date_gmt',
        'before' => date('Y-m-d H:i:s', strtotime('-' . $days . ' days')),
    );
    $args = array(
        'post_type' => 'post',
        'date_query' => array($date_query),
        'posts_per_page' => -1,
        'fields' => 'ids',
        'comment_status' => 'open',
    );

    $query = new WP_Query($args);

    if (!empty($query->posts)) {
        foreach ($query->posts as $post_id) {
            // Отключаем комментарии и пингбеки
            update_post_meta($post_id, '_comments_open', 'closed');
            wp_update_post(array(
                'ID' => $post_id,
                'comment_status' => 'closed',
                'ping_status' => 'closed',
            ));
        }
    }
}
add_action('init', 'journalx_disable_comments_on_old_posts');

Эта функция при каждом вызове проверяет все посты старше 180 дней и закрывает возможность комментирования и пингбеков. Можно менять значение $days под ваши требования.

Как улучшить работу функции

Чтобы не запускать тяжелый запрос на каждый init, можно запускать эту функцию раз в день с помощью WP-Cron:

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

add_action('journalx_daily_disable_comments', 'journalx_disable_comments_on_old_posts');

Так мы разгрузим сайт и отключение комментариев будет происходить автоматически один раз в сутки.

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

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

  • Disable Comments — позволяет массово отключать комментарии на всех типах записей, в том числе на старых. Удобен для быстрого отключения.
  • Close Comments for Old Posts — плагин, который автоматически закрывает комментарии на записях старше указанного количества дней. Очень простой и не требует настройки кода.

Например, чтобы установить Close Comments for Old Posts, перейдите в админку WordPress, выберите «Плагины» → «Добавить новый», введите название плагина и нажмите «Установить». После активации в настройках укажите нужный срок закрытия комментариев.

Интеграция с плагином Clearfy Pro для оптимизации

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

Как визуально скрыть форму комментариев на старых постах

Иногда нужно не только закрыть комментарии, но и скрыть форму их ввода на фронтенде:

function journalx_hide_comment_form_on_old_posts($open, $post_id) {
    $days = 180;
    $post_date = get_the_date('U', $post_id);
    if ((time() - $post_date) > ($days * DAY_IN_SECONDS)) {
        return false;
    }
    return $open;
}
add_filter('comments_open', 'journalx_hide_comment_form_on_old_posts', 10, 2);

Этот фильтр отключит отображение формы комментариев для постов старше 180 дней, даже если они технически открыты.

Вывод

Автоматическое отключение комментариев на старых постах помогает поддерживать чистоту сайта и снижает нагрузку на сервер. Можно реализовать это как программно — через функции в functions.php с использованием WP-Cron, так и с помощью удобных плагинов вроде Close Comments for Old Posts или Clearfy Pro. При необходимости можно дополнительно скрыть форму комментариев через фильтры WordPress.

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

⭐⭐⭐⭐⭐
Автоматическое удаление товаров из корзины WooCommerce по таймеру: практическое руководство
04.06.2026
Как удалить Emoji в WordPress с помощью плагинов и кода
20.11.2025
Как оптимизировать загрузку изображений в WordPress: практические советы и примеры кода
26.11.2025
Как удалить записи в WordPress через AJAX без перезагрузки страницы
23.11.2025
Как создать интерактивный журнал в WordPress с использованием плагинов и кода
08.02.2026
×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙