wp-code.ru wordpress WP-Codе

Автоматическое удаление старых черновиков в WordPress

В процессе ведения сайта на WordPress скапливается множество черновиков, которые со временем становятся ненужными и занимают место в базе данных. Если регулярно не очищать эти записи, это может привести к замедлению работы сайта и увеличению нагрузки на сервер. В этой статье мы подробно рассмотрим, как автоматизировать удаление старых черновиков с помощью PHP-кода и встроенного планировщика задач WordPress (WP-Cron).

Почему важно удалять старые черновики в WordPress

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

Удаление старых черновиков позволяет:

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

Настройка автоматического удаления черновиков с помощью WP-Cron

WordPress имеет встроенную систему планировщика задач — WP-Cron. С ее помощью можно запускать периодические задачи, например, скрипт удаления старых черновиков.

Рассмотрим пример функции, которая удаляет все черновики старше 30 дней. Код нужно добавить в файл functions.php вашей темы или в отдельный плагин.

Код функции удаления старых черновиков

function wpcode_delete_old_drafts() {
    global $wpdb;
    $days = 30; // Удалять черновики старше 30 дней
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

    // Получаем ID всех черновиков старше указанного срока
    $drafts = $wpdb->get_col($wpdb->prepare(
        "SELECT ID FROM {$wpdb->posts} WHERE post_status = 'draft' AND post_date < %s",
        $date_threshold
    ));

    if (!empty($drafts)) {
        foreach ($drafts as $draft_id) {
            wp_delete_post($draft_id, true); // Принудительно удаляем
        }
    }
}

Регистрация задачи в WP-Cron

Чтобы функция выполнялась автоматически, добавим задачу в планировщик WordPress.

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

add_action('wpcode_daily_draft_cleanup', 'wpcode_delete_old_drafts');

Этот код проверяет, запланирована ли уже задача, и если нет — создает её для ежедневного запуска. При срабатывании задачи будет вызвана функция wpcode_delete_old_drafts, которая удалит старые черновики.

Как изменить интервал запуска и период удаления

По умолчанию задача запускается ежедневно, а черновики удаляются, если им больше 30 дней. Вы можете изменить эти параметры под свои нужды.

  • Для изменения интервала запуска можно добавить собственный интервал в WP-Cron:
  • function wpcode_custom_cron_intervals($schedules) {
        $schedules['weekly'] = array(
            'interval' => 604800, // 7 дней в секундах
            'display' => __('Once Weekly')
        );
        return $schedules;
    }
    add_filter('cron_schedules', 'wpcode_custom_cron_intervals');
    
  • И потом назначить запуск задачи на этот интервал, заменив 'daily' на 'weekly' в функции wpcode_schedule_draft_cleanup.
  • Для изменения порога удаления просто замените значение переменной $days в функции wpcode_delete_old_drafts.

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

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

  • WP-Sweep — плагин для очистки базы данных, включая удаление старых черновиков. Позволяет вручную запускать очистку и настраивать автоматизацию.
  • Auto Delete Posts — позволяет автоматически удалять посты по заданным правилам, включая черновики.
  • Clearfy Pro (доступен на wpshop.ru) — расширенный плагин для оптимизации WordPress, имеет функции очистки базы данных и управления контентом.

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

Рекомендации по безопасности и тестированию

Перед добавлением кода на рабочий сайт обязательно протестируйте его на тестовой среде. Удаление записей — необратимая операция, поэтому важно быть уверенным, что удаляются только нужные элементы.

Рекомендуется делать резервные копии базы данных перед запуском автоматических очисток.

Также убедитесь, что задача WP-Cron корректно запускается. На некоторых хостингах WP-Cron может работать некорректно, тогда стоит настроить системный cron для вызова wp-cron.php.

Подытожим

Автоматическое удаление старых черновиков — простое, но эффективное решение для поддержания производительности и чистоты базы данных WordPress. Используя приведенный выше код и настройки, вы сможете легко настроить регулярную очистку без лишних усилий.

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше