Xóa toàn bộ ảnh có kích thước 120x120px trong WordPress

Xóa toàn bộ ảnh có kích thước 120x120px trong WordPress

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!
Từ khóa:
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:

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');
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.
Chuyên mục Công nghệ chia sẻ kiến thức về thiết bị, phần mềm và xu hướng số, giúp bạn cập nhật thông tin và ứng dụng hiệu quả trong thực tế.