WordPress по умолчанию выполняет ряд автоматических очисток и оптимизаций базы данных, таких как удаление устаревших ревизий, спама, мусорных комментариев и временных опций. Эти процессы запускаются через WP-Cron и помогают поддерживать базу данных в порядке. Однако в некоторых случаях автоматические очистки могут приводить к нагрузке на сервер, конфликтам с плагинами, или же их поведение может не соответствовать вашим задачам.
Что такое автоматические очистки (autoclean) в WordPress и почему их стоит контролировать
WordPress регулярно удаляет из базы данных некоторые данные, чтобы не допустить её разрастания и ухудшения производительности. Например, удаляются:
- старые ревизии записей;
- автоматические черновики;
- спам и мусорные комментарии;
- временные опции (transients);
- автоматические задачи WP-Cron.
В большинстве случаев эти процессы полезны, но они могут мешать в следующих ситуациях:
- на сайтах с большой базой данных и высоким трафиком, когда очистка вызывает пиковую нагрузку;
- при использовании плагинов кеширования и оптимизации, которые сами управляют очисткой;
- если вы хотите выполнять очистку вручную или по собственному расписанию;
- в случаях конфликтов с плагинами, которые работают с данными WordPress.
Как отключить стандартные автоматические очистки в WordPress
Для отключения стандартных автоматических очисток мы можем использовать фильтры и хуки в WordPress. Например, чтобы отключить удаление устаревших ревизий и мусорных комментариев, можно добавить в файл functions.php вашей темы или в собственный плагин следующий код:
add_filter('wp_revisions_to_keep', 'wpcorp_disable_revisions', 10, 2);
function wpcorp_disable_revisions($num, $post) {
// Отключаем ревизии, возвращая 0
return 0;
}
add_action('wp_scheduled_delete', 'wpcorp_disable_scheduled_delete');
function wpcorp_disable_scheduled_delete() {
// Отключаем автоматическое удаление мусорных комментариев и ревизий
remove_action('wp_scheduled_delete', 'wp_scheduled_delete');
}Однако, поскольку wp_scheduled_delete вызывается по расписанию, просто удаление этого действия не всегда срабатывает, поэтому лучше рассмотреть удаление конкретных задач WP-Cron.
Удаление задач WP-Cron для автоматических очисток
Вы можете полностью отключить автоматическую задачу очистки wp_scheduled_delete следующим образом:
add_action('init', 'wpcorp_disable_wp_scheduled_delete');
function wpcorp_disable_wp_scheduled_delete() {
if (wp_next_scheduled('wp_scheduled_delete')) {
wp_clear_scheduled_hook('wp_scheduled_delete');
}
}Этот код удалит задачу из расписания WP-Cron, и очистка не будет запускаться автоматически.
Настройка собственного расписания и автоматических очисток
Если отключить стандартные автоматические очистки, то можно настроить собственные задачи, например, запускать очистку в менее загруженное время или по своему расписанию. Для этого:
- Создайте собственный крон-хук с нужным расписанием.
- Реализуйте функцию очистки с нужной логикой.
- Запланируйте событие с помощью
wp_schedule_event.
Пример: запуск очистки устаревших ревизий и мусорных комментариев по понедельникам в 3 часа ночи.
add_action('wpcorp_weekly_cleanup', 'wpcorp_perform_cleanup');
function wpcorp_perform_cleanup() {
global $wpdb;
// Удаляем ревизии
$wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'");
// Удаляем мусорные комментарии
$wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_approved = 'spam' OR comment_approved = 'trash'");
// Удаляем устаревшие временные опции (transients)
$wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_%' OR option_name LIKE '_site_transient_%'");
}
add_action('init', 'wpcorp_schedule_weekly_cleanup');
function wpcorp_schedule_weekly_cleanup() {
if (!wp_next_scheduled('wpcorp_weekly_cleanup')) {
wp_schedule_event(strtotime('next monday 3:00'), 'weekly', 'wpcorp_weekly_cleanup');
}
}Добавление пользовательского расписания WP-Cron
По умолчанию WordPress поддерживает расписания 'hourly', 'twicedaily' и 'daily'. Для более гибкой настройки можно добавить собственное расписание, например раз в две недели:
add_filter('cron_schedules', 'wpcorp_add_custom_cron_schedule');
function wpcorp_add_custom_cron_schedule($schedules) {
$schedules['biweekly'] = [
'interval' => 1209600, // 14 дней в секундах
'display' => __('Раз в две недели')
];
return $schedules;
}После добавления нового расписания вы можете использовать его в wp_schedule_event.
Плагины для управления автоматическими очистками и оптимизацией базы
Если не хочется писать свой код, в репозитории плагинов WordPress есть множество решений для управления очисткой базы данных и оптимизацией:
- WP-Optimize — популярный плагин для очистки базы данных, удаления ревизий, мусорных комментариев, оптимизации таблиц.
- Advanced Database Cleaner — предлагает гибкие настройки автоматической очистки и оптимизации базы.
- Clearfy Pro (https://wpshop.ru/plugins/clearfy-pro/?utm_source=wpcorp.ru&utm_medium=article&utm_campaign=udalit-avtomaticheskie-chistki-v-wordpress) — плагин для комплексной оптимизации и управления автоматическими процессами WordPress, включая очистку базы.
Использование таких плагинов позволяет настроить расписание и исключения без глубоких знаний программирования.
Практические рекомендации по контролю автоматических очисток
Для стабильной работы сайта и базы данных учитывайте следующие моменты:
- Регулярно проверяйте нагрузку — если автоматические очистки вызывают пиковую нагрузку, перенастройте расписание или отключите их.
- Используйте WP-Cron правильно — в случае высокого трафика и нестабильной работы WP-Cron рассмотрите альтернативы, например системный cron, и используйте функцию
wpcorp_schedule_weekly_cleanupиз примера. - Резервное копирование — перед изменениями в автоматических задачах делайте резервные копии базы данных.
- Тестируйте на тестовом сайте — особенно если пишете собственный код для очисток.
Выводы и итоги
Автоматические очистки в WordPress — важный механизм поддержания базы данных в порядке, но иногда их поведение нужно корректировать для оптимальной работы сайта. Отключение стандартных очисток и создание собственных задач с помощью WP-Cron позволяют гибко управлять этим процессом. Комбинируйте собственные решения с проверенными плагинами, такими как Clearfy Pro, чтобы добиться наилучших результатов.