Ведение сайта на WordPress часто сопровождается активным потоком комментариев. Со временем в базе данных накапливается большое количество старых комментариев, которые могут быть неактуальны, спамом или просто не нужны. Это негативно влияет на производительность сайта и усложняет администрирование. В этой статье мы разберем, как добавить автоматическое удаление старых комментариев в WordPress с помощью кастомного кода и рассмотрим несколько полезных плагинов для решения этой задачи.
Почему важно удалять старые комментарии
Старые комментарии могут занимать значительный объем в базе данных, особенно если сайт популярен и получает много откликов. Накопление ненужных комментариев замедляет работу запросов и негативно сказывается на скорости загрузки страниц. Удаление старых комментариев помогает:
- Оптимизировать базу данных и улучшить производительность сайта;
- Уменьшить нагрузку на сервер;
- Снизить риск появления спама и вредоносных ссылок;
- Облегчить модерацию и администрирование.
Автоматизация процесса удаления избавит от необходимости делать это вручную через админку или phpMyAdmin.
Автоматическое удаление старых комментариев через WP-Cron
Самый гибкий способ — использовать планировщик задач WordPress (WP-Cron) и написать функцию, которая будет запускаться регулярно и удалять комментарии старше определенного периода.
Шаг 1. Создаем функцию удаления старых комментариев
Добавьте следующий код в файл functions.php вашей темы или в отдельный плагин:
function wpmentor_delete_old_comments() {
global $wpdb;
// Удаляем комментарии старше 180 дней
$days = 180;
$date_threshold = date('Y-m-d H:i:s', strtotime("-{$days} days"));
$comments_to_delete = $wpdb->get_col($wpdb->prepare(
"SELECT comment_ID FROM {$wpdb->comments} WHERE comment_date < %s",
$date_threshold
));
if (!empty($comments_to_delete)) {
foreach ($comments_to_delete as $comment_id) {
wp_delete_comment($comment_id, true); // true — удаляет без возможности восстановления
}
}
}
Эта функция получает ID всех комментариев старше 180 дней и удаляет их полностью.
Шаг 2. Регистрируем крон-задачу
Чтобы функция выполнялась автоматически, зарегистрируем событие WP-Cron, которое будет запускаться ежедневно:
function wpmentor_schedule_comment_cleanup() {
if (!wp_next_scheduled('wpmentor_daily_comment_cleanup')) {
wp_schedule_event(time(), 'daily', 'wpmentor_daily_comment_cleanup');
}
}
add_action('wp', 'wpmentor_schedule_comment_cleanup');
add_action('wpmentor_daily_comment_cleanup', 'wpmentor_delete_old_comments');
Этот код проверяет, запланирована ли уже задача, и если нет — создает ежедневное событие, которое вызывает функцию удаления.
Настройка периода удаления и исключения
Значение $days можно легко изменить под свои нужды. Например, для удаления комментариев старше года поставьте 365. Также можно добавить исключения, например, не удалять комментарии от определенных пользователей или с определенным статусом.
Пример исключения комментариев с пометкой "важные"
function wpmentor_delete_old_comments_with_exceptions() {
global $wpdb;
$days = 180;
$date_threshold = date('Y-m-d H:i:s', strtotime("-{$days} days"));
$comments_to_delete = $wpdb->get_col($wpdb->prepare(
"SELECT comment_ID FROM {$wpdb->comments}
WHERE comment_date < %s AND comment_approved = 1 AND comment_content NOT LIKE %s",
$date_threshold,
'%[важно]%'
));
if (!empty($comments_to_delete)) {
foreach ($comments_to_delete as $comment_id) {
wp_delete_comment($comment_id, true);
}
}
}
Этот код не удалит комментарии, в которых содержится метка [важно] в тексте.
Использование плагинов для удаления старых комментариев
Если не хочется писать код, можно использовать готовые решения:
- Delete Old Comments — простой плагин для массового удаления старых комментариев по дате;
- WP Bulk Delete — мощный плагин для массового удаления постов, комментариев, пользователей с множеством фильтров и расписаний (подробнее на wpshop.ru);
- Clearfy Pro — оптимизационный плагин с функцией очистки базы, включая удаление старых комментариев и ревизий (подробнее на wpshop.ru).
При использовании плагинов важно настроить расписание и параметры удаления, чтобы не потерять нужные данные.
Советы по безопасности и резервному копированию
Перед автоматическим удалением комментариев всегда делайте резервную копию базы данных. Это позволит восстановить данные в случае ошибки или случайного удаления важных комментариев.
Также рекомендуется тестировать код и плагины на тестовом сайте перед внедрением на боевой проект.
Итог
Автоматизация удаления старых комментариев в WordPress — важный элемент поддержки производительности сайта и удобства администрирования. Используйте WP-Cron с кастомным кодом для гибкости или готовые плагины для быстрого старта. Главное — настроить период и исключения под нужды вашего проекта.