В WordPress есть встроенный механизм планирования задач — WP-Cron, который используется для выполнения разных фоновых процессов, включая автоматическую очистку старых записей, ревизий, мусорных комментариев и т.д. Однако в некоторых случаях автоматическое удаление старых записей и ревизий может мешать, если вы хотите сохранить полный архив контента или управлять удалением вручную. В этой статье подробно разберём, как отключить автоматическое удаление старых записей через WP-Cron и какие альтернативные решения можно применить.
Как работает автоматическое удаление записей в WordPress
По умолчанию WordPress хранит несколько ревизий каждой записи, чтобы пользователь мог откатиться к предыдущей версии. Однако, чтобы база данных не разрасталась слишком сильно, WP-Cron периодически запускает задачу по удалению устаревших ревизий и мусорных записей.
Эта задача реализована через хук wp_scheduled_delete, который запускает функцию wp_delete_auto_drafts() и удаляет ревизии старше установленного времени.
Если вам нужно полностью отключить это поведение, то отключение WP-Cron не всегда подходит, так как он отвечает за множество важных задач сайта. Вместо этого можно selectively отключить именно задачу удаления.
Отключение автоматического удаления ревизий и мусора через WP-Cron
Чтобы отключить автоматическое удаление ревизий и мусорных записей, можно удалить запланированное событие из WP-Cron. Вот пример функции, которую можно добавить в файл functions.php вашей темы или в кастомный плагин:
function wpmonitor_disable_scheduled_delete() {
$timestamp = wp_next_scheduled('wp_scheduled_delete');
if ($timestamp) {
wp_unschedule_event($timestamp, 'wp_scheduled_delete');
}
}
add_action('init', 'wpmonitor_disable_scheduled_delete');
Этот код проверяет, есть ли запланированное событие wp_scheduled_delete, и при его наличии отменяет его. Таким образом, автоматическая очистка ревизий и мусора перестанет выполняться.
Важные нюансы и последствия
После отключения автоматического удаления ревизий база данных будет постепенно разрастаться, что может негативно сказаться на производительности сайта. Поэтому рекомендуем регулярно проводить ручную очистку с помощью специальных плагинов.
Ручная очистка старых ревизий и мусорных записей с помощью плагинов
Если вы отключили автоматическую очистку, стоит периодически удалять ненужные записи вручную. Для этого отлично подойдут плагины:
- WP-Optimize — бесплатный плагин для оптимизации базы данных и удаления ревизий, мусорных комментариев, спама и прочего хлама.
- Advanced Database Cleaner — позволяет настраивать очистку базы и автоматизировать процессы с расширенными фильтрами.
- Clearfy Pro — платный плагин от WPShop с расширенными функциями оптимизации и очистки, включая гибкое управление ревизиями.
Использование плагинов позволяет контролировать очистку базы данных, не полагаясь на WP-Cron.
Альтернативный метод: уменьшение количества ревизий в WordPress
Если полностью отключать удаление ревизий не хочется, можно ограничить их количество. Для этого в wp-config.php добавьте строку:
define('WP_POST_REVISIONS', 3); // Хранить не более 3 ревизий
Это позволит WordPress сохранять максимум 3 ревизии на запись, а старые будут автоматически удаляться. Такой подход снижает нагрузку на базу данных, сохраняя при этом историю изменений.
Отключение ревизий полностью
Если ревизии вам не нужны, можно полностью отключить их сохранение:
define('WP_POST_REVISIONS', false);
Однако это не влияет на автоматическое удаление других типов мусора, поэтому для комплексного контроля нужно использовать предыдущие методы.
Контроль WP-Cron и проверка запланированных задач
Для мониторинга и управления WP-Cron задачами рекомендуем использовать плагин WP Crontrol. Он позволяет:
- Просматривать все запланированные задачи.
- Удалять или изменять расписание задач.
- Добавлять собственные задачи с нужной периодичностью.
Это удобный инструмент для контроля работы WP-Cron и предотвращения нежелательных автоматических действий.
Выводы и рекомендации
Отключение автоматического удаления старых записей через WP-Cron в WordPress — задача, которая требует аккуратного подхода. Рекомендуется:
- Отключать только нужные задачи, не влияя на всю систему WP-Cron.
- Использовать плагины для регулярной ручной очистки базы данных.
- Ограничивать количество ревизий через
WP_POST_REVISIONS. - Контролировать WP-Cron с помощью плагинов типа WP Crontrol.
Такой подход обеспечит стабильную работу сайта без лишней нагрузки на базу данных.