Tự động xóa bản revision cũ mà vẫn giữ lại bản nháp gần nhất

WordPress tạo ra một bản revision (bản sửa đổi) mỗi khi bạn lưu bài viết hoặc trang. Dù tiện lợi cho việc phục hồi nội dung, revision quá nhiều có thể khiến database phình to và làm chậm website.

Tự động xóa bản revision cũ mà vẫn giữ lại bản nháp gần nhất

Trong bài viết này, bạn sẽ học cách xóa các bản revision cũ bằng code, nhưng vẫn giữ lại bản gần nhất để đảm bảo an toàn dữ liệu.

Revision trong WordPress là gì?

Mỗi khi bạn nhấn nút “Lưu nháp” hoặc “Cập nhật”, WordPress tạo ra một bản sao của nội dung – gọi là revision. Điều này giúp bạn quay lại phiên bản trước nếu cần, nhưng cũng tạo ra hàng trăm (thậm chí hàng ngàn) bản trong cơ sở dữ liệu sau một thời gian.

“Giữ lại bản sửa đổi mới nhất là đủ – những bản cũ hơn thường không cần thiết.”

Code tự động xóa revision cũ

Thêm đoạn mã sau vào file functions.php trong theme (hoặc tạo plugin riêng):

add_action('init', 'clean_old_post_revisions');

function clean_old_post_revisions() {
    global $wpdb;

    // Lấy tất cả ID bài viết
    $posts = $wpdb->get_col("
        SELECT ID FROM $wpdb->posts
        WHERE post_type = 'post' AND post_status IN ('publish', 'draft')
    ");

    foreach ($posts as $post_id) {
        // Lấy revision mới nhất của bài viết
        $latest_revision = $wpdb->get_var("
            SELECT ID FROM $wpdb->posts
            WHERE post_type = 'revision' AND post_parent = $post_id
            ORDER BY post_date DESC
            LIMIT 1
        ");

        // Xóa tất cả revision khác (trừ bản mới nhất)
        if ($latest_revision) {
            $wpdb->query("
                DELETE FROM $wpdb->posts
                WHERE post_type = 'revision'
                AND post_parent = $post_id
                AND ID != $latest_revision
            ");
        }
    }
}

Gợi ý chạy định kỳ

Để không làm chậm site, bạn có thể:

  • Chạy đoạn code thủ công từ WP-CLI
  • Hoặc tích hợp vào cron job nội bộ, ví dụ:
if (!wp_next_scheduled('cleanup_revisions_cron')) {
  wp_schedule_event(time(), 'weekly', 'cleanup_revisions_cron');
}

add_action('cleanup_revisions_cron', 'clean_old_post_revisions');

Lưu ý an toàn

  • Luôn backup database trước khi áp dụng.
  • Không nên xóa revision nếu bạn đang làm việc nhóm hoặc chỉnh sửa nội dung liên tục.
  • Giữ lại bản revision mới nhất giúp bạn phục hồi nhanh khi cần.

Kết luận

Việc giữ lại duy nhất bản revision gần nhất giúp bạn giảm bloat trong database mà vẫn giữ an toàn nội dung. Đây là cách đơn giản nhưng hiệu quả để dọn dẹp WordPress – đặc biệt với website có tuổi đời lâu hoặc nhiều người biên tập.

Bình luận


  • Không có bình luận.

Init Toolbox

Nhấn Ctrl + \ trên máy tính, hoặc vuốt sang trái ở bất kỳ đâu trên mobile.

Đăng nhập





Đang tải...