Xóa attachments, hình ảnh thừa cho WordPress

Quảng cáo
Ads_ngang
Website dinhthuanit.com có bài Xóa attachments, hình ảnh thừa cho WordPress

Trong bài trước mình có chủ đề về tối ưu dung lượng Database cho WordPress, giúp bạn xóa những dữ liệu thừa không sử dụng và giảm kích cỡ CSDL giúp tối ưu website để chạy nhanh hơn. Tuy nhiên để lúc các tệp sử dụng để chạy website của bạn được tạo nên nhiều sẽ khiến tăng dung lượng lưu trũ hosting. Bài bữa nay mình sẽ hướng dẫn các bạn tìm và xóa những tệp hình ảnh, file đính kèm không sử dụng trên website WordPress của bạn.

Như bạn có thể nhận thấy, mọi Hosting đều giới hạn con số tệp cho phép lưu giữ , con số files tăng lên sẽ làm tăng inode, khi số lượng vượt quá cấp phép website của bạn sẽ gặp vấn đề, một số lỗi WordPress bạn thường gặp như không cho đăng bài viết, tải hình ảnh bị lỗi..

Xóa Attachments không sử dụng

Có 2 hình thức bạn cũng có thể đăng tải lên WordPress, sử dụng trình tải file trực tiếp từ menu “Thư viện” hoặc gián tiếp thông qua bài viết. Chúng ta cần xóa file không sử dụng trong thư mục /wp-content/uploads, Mỗi hình ảnh bạn đăng tải bài viết Post thuộc về Post, cách dễ dàng để giảm các attachments là xóa đi những tệp không gán cho Post Type nào.

Tạo tệp mang tên cleanup.php tại thư mục gốc public_html và chèn vào đoạn code sau.

   get_results("SELECT DISTINCT meta_value FROM `".$wpdb-> prefix."postmeta` mt left join `".$wpdb-> prefix."posts` p on mt.post_> meta_value)] = 1; } //glob files: wp-content/uploads/* $files = (array)glob( 'wp-content/uploads/*/*/*.{jpg,png,gif,bmp,jpeg}', GLOB_BRACE); foreach($files as $f) { $f1 = trim(str_replace('wp-content/uploads/','', $f),'/'); $t=preg_split('#-(d+)x(d+)#', $f1); $t= rmFileExt($t[0]); if($t && !isset($list[$t])) { unlink($f);$i++; } } printf("Found %s in DBn", count($list)); printf ("Deleted $i/%s files.n", count($files));  

Lưu ý, trường hợp bạn sử dụng file riêng biệt có tải lên từ trình tải Media của WordPress và sử dụng liên kết của nó, rất tiếc đoạn code ở trên sẽ nhận dạng và xóa những files đó. Do đó, trước khi bạn chạy đoạn mã trên, cần định vị những tệp bạn tải lên mà có sử dụng liên kết cho Widget, hay trong giao diện WordPress của bạn.

Một cách tiếp cận khác, bạn mong muốn loại bỏ những tệp hình ảnh, file đính kèm khác từ Post đã xóa vào Trash. Ở trường hợp này chúng ta sẽ chỉ xóa những tệp trong thư mục /uploads , có sử dụng dụng cho Post đã biết thành xóa. Để thực hành bạn tạo tệp với tên cleanup_trash.php với nội dung dưới đây:

   get_results("SELECT distinct meta_value FROM `".$wpdb-> prefix."postmeta` mt left join `".$wpdb-> prefix."posts` p on mt.post_> prefix."posts where post_status='trash')"); $list=[]; foreach($r as $row) { $list[rmFileExt($row-> meta_value)] = 1; } //glob files: wp-content/uploads/* $files = (array)glob( 'wp-content/uploads/*/*/*.{jpg,png,gif,bmp,jpeg}', GLOB_BRACE); foreach($files as $f) { $f1 = trim(str_replace('wp-content/uploads/','', $f),'/'); $t=preg_split('#-(d+)x(d+)#', $f1); $t= rmFileExt($t[0]); if($t && isset($list[$t])) { unlink($f);$i++; } } printf("Found %s in DB need to be deletedn", count($list)); printf ("Deleted $i/%s files.n", count($files));  

Với 2 cách trên, chúng ta sẽ xóa đi những tệp hình ảnh, attachments không sử dụng cho bài viết, sản phẩm và những Posts đã xóa trước khi xóa vĩnh viễn từ Database. Chúc bạn thành công!

Nếu bạn thích bài viết này, hãy ủng hộ chúng tôi bằng cách đăng ký nhận bài viết mới ở bên dưới và hãy nhớ chia sẻ kiến thức này với bạn bè của bạn nhé. Bạn cũng có thể theo dõi blog này trên Twitter và Facebook

Bài viết Xóa attachments, hình ảnh thừa cho WordPress được tổng hợp và biên tập bởi: dinhthuanit.com. Mọi ý kiến đóng góp và phản hồi vui lòng gửi Liên Hệ cho dinhthuanit.com để điều chỉnh. dinhthuanit.com xin cảm ơn.

Bài Viết Liên Quan


Bài Viết Khác


Quảng cáo
Ads_ngang