Cách xóa Ảnh Thumbnails Thừa Và Khắc Phục Lỗi Hiển Thị
Lưu ý quan trọng trước khi thực hiện: Quá trình này sẽ can thiệp trực tiếp vào file vật lý trên máy chủ và dữ liệu trong Database. Bạn bắt buộc phải sao lưu (backup) toàn bộ thư mục wp-content/uploads và xuất file Database (.sql) để phòng rủi ro.
Mục lục nội dung bài viếtHiện
Bước 1: Ngăn WordPress tự động sinh thêm ảnh thumbnails mới
Để ngăn chặn máy chủ tiếp tục bị đầy dung lượng trong tương lai, bạn cần vô hiệu hóa việc tự động tạo các kích thước ảnh thừa.
- Vào Cài đặt (Settings) > Thư viện (Media). Đưa toàn bộ các thông số kích thước (Thu nhỏ, Trung bình, Lớn) về
0. - Để chặn triệt để các size ảnh do Theme hoặc WooCommerce tự động tạo thêm, bạn dán đoạn mã sau vào file
functions.phpcủa theme đang dùng:
add_filter( 'intermediate_image_sizes_advanced', 'disable_unused_image_sizes' );
function disable_unused_image_sizes( $sizes ) {
unset( $sizes['thumbnail'] );
unset( $sizes['medium'] );
unset( $sizes['medium_large'] );
unset( $sizes['large'] );
unset( $sizes['1536x1536'] );
unset( $sizes['2048x2048'] );
// Nếu không muốn WooCommerce tự cắt ảnh, bỏ comment các dòng dưới
// unset( $sizes['woocommerce_thumbnail'] );
// unset( $sizes['woocommerce_single'] );
// unset( $sizes['woocommerce_gallery_thumbnail'] );
return $sizes;
}
Bước 2: Xóa các file ảnh thumbnails rác cũ trên host

- Cài đặt và kích hoạt plugin Regenerate Thumbnails.
- Truy cập vào Công cụ (Tools) > Regenerate Thumbnails.
- Đánh dấu tick vào tùy chọn “Delete thumbnail files for old unregistered sizes…” (Xóa các file ảnh của những kích thước không còn được đăng ký).
- Bấm chạy công cụ và chờ hệ thống quét. Nó sẽ tự động dọn sạch các file ảnh kích thước phụ thừa thãi (đã bị bạn chặn ở Bước 1) và giải phóng dung lượng cho máy chủ.

Bước 3: Kiểm tra giao diện và phát hiện lỗi hiển thị ảnh
Sau khi quá trình dọn dẹp hoàn tất, hãy xóa toàn bộ bộ nhớ đệm (Cache) của website (Cloudflare, LiteSpeed…) và kiểm tra lại trên nhiều thiết bị.
Trong một số trường hợp, các bài viết hoặc nội dung sản phẩm cũ đã được lưu cứng (hardcode) đường link chứa hậu tố kích thước (ví dụ: ten-anh-1024x947.jpg) vào thẳng nội dung bài. Vì file ảnh -1024x947 vừa bị bạn xóa vật lý trên host ở Bước 2, trình duyệt sẽ báo lỗi 404 không tìm thấy ảnh.
Bước 4: Chạy code tự động đưa link ảnh về bản gốc trong Database
Để xử lý triệt để lỗi mất ảnh mà không phải dò sửa từng bài viết bằng tay, hãy chạy đoạn mã sau để ép hệ thống tự quét Database và tự động gọi lại link ảnh gốc.
- Vào Giao diện (Appearance) > Theme File Editor và mở file
functions.php(hoặc sửa qua File Manager). - Dán đoạn mã dưới đây vào cuối cùng của file:
add_action( 'admin_init', 'fix_image_links_in_database_permanently' );
function fix_image_links_in_database_permanently() {
// Tránh chạy nhiều lần
if ( get_option( 'da_fix_anh_goc' ) ) return;
global $wpdb;
// Lấy nội dung của tất cả bài viết, trang, và sản phẩm
$posts = $wpdb->get_results( "SELECT ID, post_content FROM {$wpdb->posts} WHERE post_status = 'publish'" );
foreach ( $posts as $post ) {
// Regex xóa các hậu tố kích thước (như -1024x947), giữ nguyên phần đuôi .jpg, .png...
$new_content = preg_replace( '/-\d+x\d+(?=\.(jpg|jpeg|png|gif|webp))/i', '', $post->post_content );
// Nếu phát hiện có link chứa hậu tố kích thước thì mới cập nhật vào Database
if ( $new_content !== $post->post_content ) {
$wpdb->update(
$wpdb->posts,
array( 'post_content' => $new_content ),
array( 'ID' => $post->ID )
);
}
}
// Đánh dấu vào hệ thống là script đã chạy xong
update_option( 'da_fix_anh_goc', 1 );
}
- Thực thi code: Bấm Lưu file (Update File). Sau đó, bạn chỉ cần mở một tab mới và F5 tải lại trang quản trị (Dashboard
/wp-admin) từ 1 đến 2 lần. Khi bạn load trang, đoạn mã trên sẽ tự động chạy ngầm để quét và sửa lại toàn bộ link ảnh trong Database thành vĩnh viễn. - Xóa code: Sau khi trang admin tải xong và hình ảnh ngoài website đã hiển thị lại đầy đủ, bạn quay lại file
functions.phpvà xóa hoàn toàn đoạn code trên đi. Do Database đã được sửa vĩnh viễn, bạn không cần nuôi đoạn mã này trong hệ thống nữa.
Hoàn tất quy trình, bạn xóa lại Cache website (LiteSpeed, Cloudflare) một lần nữa. Web của bạn giờ đây đã được giải phóng hàng loạt dung lượng thừa, hiển thị trơn tru trên mọi thiết bị và đồng bộ 100% về ảnh gốc.
