wpinc.ru wordpress WP Inc

Как удалить автоматические черновики в WordPress с помощью кода

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

Что такое автоматические черновики и зачем их удалять

Когда вы редактируете запись, WordPress периодически сохраняет её текущую версию как автосохранение. Это позволяет восстановить данные при сбое или закрытии браузера. Такие автосохранения хранятся в базе данных как отдельные записи с типом post_type = 'revision'. Со временем их количество может значительно увеличиться, особенно на активных сайтах с большим количеством контента.

Удаление устаревших автоматических черновиков поможет:

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

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

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

Все автоматические черновики хранятся в таблице wp_posts со следующими критериями:

  • post_type = 'revision' — тип записи ревизия;
  • post_status = 'inherit' — статус наследуемый от родительской записи;
  • созданы автоматически, а не вручную (это можно определить по дате и другим параметрам).

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

Удаление автоматических черновиков через WPINC:delete_autosaves()

Для удобства создадим функцию с префиксом wpinc, которая удалит автоматические черновики старше определённого времени. Например, удалять автосохранения старше 7 дней.

function wpinc_delete_autosaves( $days = 7 ) {
    global $wpdb;
    $date_threshold = date( 'Y-m-d H:i:s', strtotime( "-{$days} days" ) );

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

    if ( empty( $autosaves ) ) {
        return 0;
    }

    foreach ( $autosaves as $autosave_id ) {
        wp_delete_post( $autosave_id, true );
    }

    return count( $autosaves );
}

Эта функция обращается напрямую к базе данных и выбирает все ревизии, созданные раньше 7 дней назад, затем удаляет их полностью.

Как запустить функцию удаления по расписанию

Чтобы автоматизировать удаление, можно добавить крон-задачу WordPress. Пример кода для регистрации события:

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

add_action( 'wpinc_autosave_cleanup_event', function() {
    $deleted = wpinc_delete_autosaves( 7 );
    if ( $deleted ) {
        error_log( "WPINC: Deleted {$deleted} autosave revisions." );
    }
} );

Этот код настроит ежедневный запуск функции удаления автосохранений старше 7 дней. Также он пишет в лог количество удалённых записей, что полезно для отладки.

Плагины для управления ревизиями и автосохранениями

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

  • WP Rocket — оптимизация и очистка базы данных, в том числе удаление ревизий.
  • WP-Optimize — комплексная оптимизация базы, удаление ревизий и временных данных.
  • Revision Control — ограничение количества ревизий и управление ими.

Также можно использовать Clearfy Pro для удобной оптимизации и очистки базы данных с настройками удаления автосохранений и ревизий.

Практические рекомендации по работе с автосохранениями

Несколько советов для работы с автосохранениями и ревизиями в WordPress:

  • Регулярно очищайте устаревшие автосохранения, чтобы не перегружать базу данных.
  • Ограничьте количество ревизий через константу WP_POST_REVISIONS в wp-config.php например, define('WP_POST_REVISIONS', 5);.
  • Используйте планировщик задач для автоматической очистки старых ревизий и автосохранений.
  • Перед удалением всегда делайте резервную копию базы данных.

Удаление автоматических черновиков — простой и эффективный способ оптимизировать работу сайта и уменьшить размер базы данных без вреда для контента.

×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙