Để tránh việc tạo ra các kích thước hình ảnh crop trong WordPress ngay từ đầu, bạn có thể ngăn chặn quá trình tạo kích thước trung gian trước khi hình ảnh được upload. Bằng cách này, không chỉ tiết kiệm tài nguyên mà còn giúp giảm thiểu công việc xóa các file không cần thiết sau khi đã được tạo.
Dưới đây là cách thực hiện:
Sử dụng hook intermediate_image_sizes_advanced
để ngăn WordPress tạo ra bất kỳ kích thước ảnh trung gian nào. Đoạn mã sau sẽ giúp bạn làm điều này:
function disable_intermediate_image_sizes($sizes) { // Trả về một mảng rỗng để không tạo kích thước trung gian nào return array(); } add_filter('intermediate_image_sizes_advanced', 'disable_intermediate_image_sizes');
Hàm trên sẽ ngăn chặn việc tạo kích thước trung gian ngay khi upload. Dưới đây là một đoạn mã hoàn chỉnh bạn có thể thêm vào file functions.php
:
// Kiểm tra và ngăn chặn upload hình ảnh không hợp lệ function custom_upload_single_image($file) { // Kiểm tra xem file có phải là hình ảnh không $file_type = wp_check_filetype($file['name']); // Chỉ cho phép upload file hình ảnh if (strpos($file_type['type'], 'image') === false) { return new WP_Error('invalid_file_type', 'Chỉ cho phép upload file hình ảnh.'); } return $file; } add_filter('wp_handle_upload_prefilter', 'custom_upload_single_image'); // Ngăn chặn việc tạo kích thước ảnh trung gian function disable_intermediate_image_sizes($sizes) { return array(); // Không tạo kích thước trung gian nào } add_filter('intermediate_image_sizes_advanced', 'disable_intermediate_image_sizes'); // Ngăn chặn việc lưu trữ thông tin về các kích thước đã tạo trong metadata function prevent_image_size_metadata($metadata, $attachment_id) { if (isset($metadata['sizes'])) { $metadata['sizes'] = array(); // Xóa tất cả kích thước đã tạo } return $metadata; } add_filter('wp_generate_attachment_metadata', 'prevent_image_size_metadata', 10, 2);
functions.php
trước khi thực hiện bất kỳ thay đổi nào, để tránh gây ra lỗi hoặc mất dữ liệu không mong muốn.