Почему важно удалять старые черновики в WordPress
Черновики в WordPress — это незавершённые или отложенные публикации, которые со временем могут накапливаться и занимать место в базе данных. Если не очищать их, это приводит к раздуванию таблиц, что замедляет работу сайта и усложняет администрирование. Особенно это заметно на крупных проектах, где количество контента и редакторских процессов значительно.
Автоматическое удаление старых черновиков помогает поддерживать базу данных в чистоте, повышает быстродействие и уменьшает нагрузку на сервер, а также облегчает работу с админкой.
Рассмотрим, как настроить такую автоматизацию с помощью собственных скриптов и плагинов.
Создание функции для удаления старых черновиков через wp-cron
Подключение функции к системному планировщику WordPress
В WordPress есть встроенная система планировщика заданий — wp-cron. С её помощью можно запускать регулярные задачи, в том числе удаление устаревших черновиков.
Ниже приведён пример функции wpfront_delete_old_drafts(), которая удаляет все черновики старше 30 дней:
function wpfront_delete_old_drafts() {
global $wpdb;
$days = 30; // Количество дней для хранения черновиков
$date = date('Y-m-d H:i:s', strtotime("-" . $days . " days"));
// Получаем ID всех черновиков старше $days
$drafts = $wpdb->get_col($wpdb->prepare(
"SELECT ID FROM {$wpdb->posts} WHERE post_status = 'draft' AND post_date < %s",
$date
));
if (!empty($drafts)) {
foreach ($drafts as $post_id) {
wp_delete_post($post_id, true); // Удаляем навсегда
}
}
}
// Регистрируем событие при активации темы/плагина
function wpfront_schedule_delete_old_drafts() {
if (!wp_next_scheduled('wpfront_daily_delete_old_drafts')) {
wp_schedule_event(time(), 'daily', 'wpfront_daily_delete_old_drafts');
}
}
add_action('wp', 'wpfront_schedule_delete_old_drafts');
// Привязываем нашу функцию к событию
add_action('wpfront_daily_delete_old_drafts', 'wpfront_delete_old_drafts');Эта функция автоматически удалит все черновики старше 30 дней один раз в сутки. Вы можете изменить период, корректируя переменную $days.
Как отключить задачу при деактивации темы или плагина
Чтобы не оставлять «мусор» в планировщике, важно отменять запланированное событие при деактивации:
function wpfront_unschedule_delete_old_drafts() {
$timestamp = wp_next_scheduled('wpfront_daily_delete_old_drafts');
if ($timestamp) {
wp_unschedule_event($timestamp, 'wpfront_daily_delete_old_drafts');
}
}
register_deactivation_hook(__FILE__, 'wpfront_unschedule_delete_old_drafts');Использование плагинов для управления черновиками
Плагины для автоматической очистки черновиков
Если вы не хотите писать код, можно воспользоваться готовыми плагинами:
- WP-Sweep — позволяет чистить базу данных от неиспользуемых данных, включая старые черновики.
- Auto Delete Drafts — плагин для автоматического удаления черновиков по заданному сроку.
Эти плагины позволяют настраивать удаление через интерфейс, что удобно, если вы не хотите изменять код или боитесь ошибиться.
Интеграция с плагином Clearfy Pro
Если вы используете Clearfy Pro, в нем есть инструменты для оптимизации базы данных и удаления ненужного контента. Настройте автоматическую очистку старых черновиков через этот плагин, чтобы получить полный контроль и дополнительные возможности оптимизации.
Как проверять и оптимизировать базу данных после удаления черновиков
Даже после удаления черновиков в таблицах могут оставаться мусорные записи или фрагменты. Рекомендуется периодически выполнять оптимизацию базы данных.
Это можно сделать через phpMyAdmin командой:
OPTIMIZE TABLE wp_posts;Или использовать плагины, например WP-Optimize, которые автоматизируют эту задачу и позволяют выполнять очистку и оптимизацию базы данных в несколько кликов.
Регулярная оптимизация помогает избежать фрагментации, ускоряет запросы и повышает общую производительность сайта.