Mỗi khi mình tải ảnh lên thư viện website WordPress, một số plugin (như YARPP) tự động tạo ra ảnh với kích thước 120x120px. Sau khi cấu hình lại, mình nhận thấy các ảnh này không còn cần thiết và muốn xóa chúng để tiết kiệm dung lượng.
Mình đã thử tìm kiếm giải pháp trên Google và các diễn đàn, nhưng vẫn chưa tìm được cách cụ thể để xóa toàn bộ ảnh có kích thước 120x120px trong thư mục wp-content/uploads.
Những gì mình cần:
- Một cách an toàn để tìm và xóa tất cả các ảnh có hậu tố -120x120 có đuôi jpg| jpeg| png| gif| webp| jpg.webp| bk.jpg mà không ảnh hưởng đến các file ảnh khác.
- Nếu có thể, mình muốn thực hiện việc này tự động thông qua mã PHP hoặc một công cụ hỗ trợ.
Mình đã thử một số đoạn mã nhưng không hoạt động như mong đợi. Vậy nên, mình rất mong nhận được sự chia sẻ kinh nghiệm hoặc giải pháp từ các bạn.
Xin cảm ơn rất nhiều!
Xóa toàn bộ ảnh có kích thước 120x120px trong WordPress
- Google AdsenseĐã xác thực
- Quảng Cáo
Re: Xóa toàn bộ ảnh có kích thước 120x120px trong WordPress
Đơn giản mà, bạn chỉ cần thêm đoạn mã này vào file functions.php của theme bạn đang sử dụng hoặc tạo một plugin PHP riêng:
Giải thích cách hoạt động
- Duyệt Thư Mục uploads: Đoạn mã sử dụng RecursiveDirectoryIterator để duyệt qua tất cả thư mục con và file trong wp-content/uploads.
- Tìm File 120x120px: Dùng biểu thức chính quy để tìm file có đuôi -120x120.(jpg|jpeg|png|gif|webp|jpg.webp|bk.jpg).
- Xóa File: File phù hợp sẽ bị xóa bằng hàm unlink().
- Log Các File Đã Xóa: Tên file đã xóa sẽ được ghi vào log của WordPress để bạn có thể kiểm tra.
- Chỉ Kích Hoạt Khi Truy Cập Admin: Hàm delete_images_120x120() được kích hoạt qua hook admin_init, chỉ chạy khi bạn truy cập dashboard admin.
Mã: Chọn tất cả
function delete_images_120x120() {
// Đường dẫn tới thư mục uploads
$upload_dir = wp_get_upload_dir()['basedir'];
// Đảm bảo thư mục tồn tại
if (!is_dir($upload_dir)) {
return;
}
// Duyệt qua tất cả file trong thư mục uploads
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($upload_dir, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::SELF_FIRST
);
// Biến đếm số file đã xóa
$deleted_files = 0;
// Xử lý từng file
foreach ($iterator as $file) {
if ($file->isFile() && preg_match('/-120x120\.(jpg|jpeg|png|gif|webp|jpg.webp|bk.jpg)$/i', $file->getFilename())) {
// Xóa file
unlink($file->getPathname());
error_log('Deleted file: ' . $file->getPathname()); // Ghi log
$deleted_files++;
}
}
// Kết quả
echo 'Đã xóa ' . $deleted_files . ' file ảnh có kích thước 120x120px.';
}
add_action('admin_init', 'delete_images_120x120');
- Duyệt Thư Mục uploads: Đoạn mã sử dụng RecursiveDirectoryIterator để duyệt qua tất cả thư mục con và file trong wp-content/uploads.
- Tìm File 120x120px: Dùng biểu thức chính quy để tìm file có đuôi -120x120.(jpg|jpeg|png|gif|webp|jpg.webp|bk.jpg).
- Xóa File: File phù hợp sẽ bị xóa bằng hàm unlink().
- Log Các File Đã Xóa: Tên file đã xóa sẽ được ghi vào log của WordPress để bạn có thể kiểm tra.
- Chỉ Kích Hoạt Khi Truy Cập Admin: Hàm delete_images_120x120() được kích hoạt qua hook admin_init, chỉ chạy khi bạn truy cập dashboard admin.
-
- Chủ đề tương tự