NỘI DUNG

1. Mô tả lỗi
Khi bạn cố gắng upload một file ảnh có định dạng .avif
lên WordPress, bạn có thể gặp thông báo lỗi:
This image cannot be processed by the web server. Convert it to JPEG or PNG before uploading.
Lỗi này khiến bạn không thể tải lên ảnh AVIF và bắt buộc phải chuyển đổi sang định dạng khác như JPEG hoặc PNG.
2. Nguyên nhân lỗi
Lỗi này xảy ra do WordPress mặc định sử dụng thư viện xử lý ảnh WP_Image_Editor_Imagick
(ImageMagick). Tuy nhiên, không phải tất cả các server đều có ImageMagick hỗ trợ định dạng AVIF. Khi gặp định dạng không được hỗ trợ, WordPress sẽ không thể xử lý hình ảnh, dẫn đến lỗi trên.
3. Cách khắc phục lỗi
Một cách đơn giản để giải quyết vấn đề này là thay đổi trình xử lý hình ảnh mặc định của WordPress từ WP_Image_Editor_Imagick
sang WP_Image_Editor_GD
. Thư viện GD có thể hỗ trợ định dạng AVIF tùy thuộc vào phiên bản PHP và cấu hình server.
3.1. Thêm đoạn code vào file functions.php
Để khắc phục lỗi này, bạn cần thêm đoạn mã sau vào file functions.php
của theme đang sử dụng. Bạn truy cập vào Hosting/VPS di chuyển đến thư mục themes và mở file ra.

Copy và thêm đoạn code sau vào dưới cùng của file và lưu lại.
## Fix_upload_AVIF
function hs_image_editor_default_to_gd( $editors ) {
$gd_editor = 'WP_Image_Editor_GD';
$editors = array_diff( $editors, array( $gd_editor ) );
array_unshift( $editors, $gd_editor );
return $editors;
}
add_filter( 'wp_image_editors', 'hs_image_editor_default_to_gd' );
Khi thêm xong sẽ giống như ảnh bên dưới.

3.2. Ý nghĩa của đoạn code trên
Để bạn hiểu hơn về đoạn code trên, tôi sẽ chú thích từng dòng để bạn dễ nắm.
$editors
: Danh sách các trình xử lý hình ảnh mà WordPress có thể sử dụng.$gd_editor = 'WP_Image_Editor_GD'
: Xác định trình xử lý hình ảnh GD.array_diff( $editors, array( $gd_editor ) )
: Loại bỏ GD khỏi danh sách nếu nó đã có.array_unshift( $editors, $gd_editor )
: Đưa GD lên đầu danh sách, ưu tiên sử dụng nó thay vì ImageMagick.add_filter( 'wp_image_editors', 'hs_image_editor_default_to_gd' )
: Thêm filter để thay đổi trình xử lý hình ảnh mặc định của WordPress.
4. Kiểm tra lại sau khi sửa lỗi
Sau khi thêm đoạn code trên vào functions.php
, thử upload lại file AVIF. Nếu thành công, điều đó có nghĩa là GD trên server của bạn đã hỗ trợ AVIF.
Nếu vẫn gặp lỗi, có thể server chưa được biên dịch GD với hỗ trợ AVIF. Trong trường hợp đó, bạn cần kiểm tra lại phiên bản PHP và cập nhật GD.
5. Kết luận
Lỗi không upload được ảnh AVIF trên WordPress chủ yếu do trình xử lý hình ảnh mặc định (Imagick) không hỗ trợ định dạng này. Giải pháp là chuyển sang sử dụng GD, một thư viện có thể hỗ trợ AVIF tùy thuộc vào phiên bản PHP. Bằng cách thêm đoạn code vào functions.php, bạn có thể dễ dàng khắc phục vấn đề mà không cần cài đặt thêm plugin hay thay đổi cấu hình server.