Khi bạn đang chỉnh sửa bài viết và cố gắng tải lên một bức ảnh, WordPress bất ngờ hiển thị thông báo “WordPress upload image file type not permitted”. Lỗi này xuất hiện ngay cả với những định dạng ảnh phổ biến như PNG, JPG hay WebP. Nguyên nhân không phải do file hỏng mà đến từ cấu hình bảo mật hoặc xung đột plugin. Trong hướng dẫn này,
Bản Chất Của Lỗi “File Type Not Permitted” Trong WordPress

WordPress có một cơ chế kiểm tra loại file (MIME type) trước khi cho phép tải lên. Mỗi định dạng ảnh đều được gán một MIME type nhất định, ví dụ image/jpeg cho JPG, image/png cho PNG. Khi hệ thống nhận diện được MIME type của file tải lên không nằm trong danh sách cho phép hoặc không khớp với phần mở rộng (extension), nó sẽ từ chối và hiển thị thông báo “file type not permitted”.
Lỗi này thường xảy ra trong các trường hợp:
- Bạn cố tình tải lên một định dạng ảnh không được hỗ trợ mặc định (như.webp,.avif,.svg).
- Plugin bảo mật hoặc tường lửa can thiệp vào quá trình upload.
- Hàm
wp_check_filetype_and_ext()trong WordPress bị lỗi do dữ liệu MIME type không đúng. - Cấu hình trên máy chủ (server) chặn một số loại file vì lý do bảo mật.
- Theme hoặc plugin tùy chỉnh ghi đè lên danh sách MIME type mặc định.
Phân Loại Các Nguyên Nhân Gây Lỗi

1. Định Dạng Ảnh Không Được WordPress Hỗ Trợ Mặc Định
WordPress mặc định chỉ cho phép một số định dạng ảnh phổ biến: JPG, JPEG, PNG, GIF, BMP, TIFF, ICO. Nếu bạn cố upload file.webp,.avif,.svg hoặc.heic, hệ thống sẽ từ chối ngay lập tức. Đây là nguyên nhân phổ biến nhất.
2. Plugin Bảo Mật Hoặc Plugin Tối Ưu Hình Ảnh Xung Đột
Một số plugin như Wordfence, iThemes Security, All In One WP Security & Firewall có thể chặn các loại file nhất định nếu chúng cho rằng đó là nguy cơ bảo mật. Plugin tối ưu hình ảnh (Smush, EWWW Image Optimizer) đôi khi thay đổi MIME type gốc của file dẫn đến việc kiểm tra thất bại.
3. Lỗi Từ Hàm Kiểm Tra File Type Của WordPress
WordPress sử dụng hàm wp_check_filetype_and_ext() để xác thực file. Nếu hàm này nhận được thông tin MIME type sai từ máy chủ (ví dụ: máy chủ trả về application/octet-stream thay vì image/jpeg), nó sẽ báo lỗi. Lỗi này thường xảy ra khi cấu hình máy chủ hoặc file.htaccess bị can thiệp.
4. Cấu Hình PHP Hoặc Server Chặn Upload
Giới hạn upload trong php.ini (upload_max_filesize, post_max_size) hoặc các thiết lập security trên server (như disable_functions) cũng có thể gây ra lỗi này nếu file vượt quá dung lượng cho phép, nhưng thường lỗi sẽ là “The uploaded file exceeds the upload_max_filesize directive”. Tuy nhiên, đôi khi nó hiển thị nhầm thành “file type not permitted”.
5. Theme Hoặc Plugin Custom Code Ghi Đè MIME Type
Một số theme hoặc plugin chèn code vào functions.php để thêm hoặc xóa các MIME type được phép. Nếu đoạn code này có lỗi cú pháp hoặc không tương thích với phiên bản WordPress hiện tại, nó có thể vô tình chặn tất cả các file ảnh.
Hướng Dẫn Khắc Phục Lỗi “WordPress Upload Image File Type Not Permitted”

Giải Pháp 1: Kiểm Tra Định Dạng Và Đổi Tên File
Xác minh xem file ảnh của bạn có đúng phần mở rộng hay không. Ví dụ: file.png nhưng phần mở rộng lại là.jpg? Hoặc file thực chất là.webp nhưng bạn đổi đuôi thành.png? WordPress kiểm tra cả MIME type bên trong file lẫn phần mở rộng, nếu không khớp nó sẽ báo lỗi. Hãy dùng phần mềm chỉnh sửa ảnh (như Photoshop, GIMP) để export lại đúng định dạng. Nếu bạn muốn upload.webp, hãy chuyển sang giải pháp 2 hoặc 5.
Giải Pháp 2: Kích Hoạt Hỗ Trợ Định Dạng Ảnh WebP, SVG, AVIF
WordPress từ phiên bản 5.8 đã hỗ trợ WebP mặc định. Nếu bạn dùng phiên bản cũ hơn hoặc muốn hỗ trợ thêm SVG, AVIF, bạn cần thêm code vào file functions.php của theme (hoặc dùng plugin).
Thêm code vào functions.php:
Mở file functions.php của theme (qua FTP hoặc giao diện Theme Editor) và thêm đoạn code sau:
// Cho phép upload file WebP
function my_custom_mime_types( $mimes ) { $mimes['webp'] = 'image/webp'; $mimes['svg'] = 'image/svg+xml'; $mimes['avif'] = 'image/avif'; return $mimes;
}
add_filter( 'upload_mimes', 'my_custom_mime_types' );
Sau đó lưu lại và thử upload lại ảnh.
Lưu ý: SVG có thể gây rủi ro bảo mật vì chứa mã XML. Chỉ nên cho phép SVG nếu bạn tin tưởng người dùng upload hoặc dùng plugin chuyên dụng (như Safe SVG).
Giải Pháp 3: Tắt Plugin Bảo Mật Hoặc Plugin Ảnh Tạm Thời
Vào menu Plugins > Installed Plugins, deactivate tất cả các plugin liên quan đến bảo mật, tối ưu hình ảnh, cache. Sau đó thử upload lại. Nếu thành công, hãy kích hoạt từng plugin một để tìm ra plugin gây xung đột. Khi đã xác định được plugin, hãy kiểm tra cài đặt của nó để thêm loại file ảnh vào whitelist.
Giải Pháp 4: Kiểm Tra File.htaccess Và Cấu Hình Máy Chủ
Đôi khi file.htaccess trong thư mục wp-content/uploads có thể chặn một số loại file. Hãy kiểm tra và đảm bảo không có dòng lệnh như Deny from all hoặc RewriteRule chặn file ảnh. Bạn cũng có thể thêm dòng sau vào.htaccess của thư mục gốc WordPress để đảm bảo MIME type được nhận diện đúng:
AddType image/webp.webp AddType image/svg+xml.svg AddType image/avif.avif
Nếu bạn dùng server Nginx, hãy liên hệ với nhà cung cấp hosting để thêm cấu hình tương tự vào file cấu hình Nginx.
Giải Pháp 5: Sử Dụng Plugin Thêm MIME Type
Nếu bạn không muốn chỉnh sửa code, có thể cài plugin “WP Extra File Types” hoặc “Enable SVG, WebP & AVIF Upload”. Plugin này sẽ tự động thêm các MIME type được yêu cầu mà không cần can thiệp thủ công. Sau khi cài và kích hoạt,
Nguyên nhân thường là do plugin bảo mật hoặc tường lửa chặn. Hãy tạm thời tắt tất cả plugin, nếu hết lỗi, kích hoạt từng plugin để tìm ra thủ phạm. Ngoài ra, kiểm tra xem file JPG có bị hỏng hoặc đã bị đổi đuôi không đúng không.
Có cần phải cài plugin riêng để upload SVG không?
Nên cài plugin như Safe SVG hoặc SVG Support để đảm bảo an toàn. Việc chỉ thêm MIME type vào functions.php có thể cho phép upload file SVG chứa mã độc, dẫn đến XSS attack. Plugin chuyên dụng sẽ sanitize nội dung SVG trước khi lưu.
Tại sao tôi đã thêm MIME type WebP vào functions.php nhưng vẫn báo lỗi?
Kiểm tra lại xem bạn có đang dùng caching plugin không. Xóa cache của WordPress và trình duyệt. Đồng thời kiểm tra xem file.htaccess có cấu hình chặn.webp không. Nếu server là Nginx, bạn cần nhờ host thêm AddType image/webp.webp vào cấu hình.
Lỗi này có ảnh hưởng đến ảnh đã upload trước đó không?
Không. Lỗi chỉ xảy ra khi bạn cố gắng upload file mới. Các file ảnh đã tồn tại trong thư viện vẫn hoạt động bình thường.
Sử dụng plugin “Enable Media Replace” có khắc phục được không?
Plugin Enable Media Replace chỉ giúp thay thế file ảnh đã có, không giải quyết được lỗi khi upload file mới. Bạn vẫn cần xử lý nguyên nhân gốc.
Kết Luận

Lỗi “WordPress upload image file type not permitted” thường không phải là vấn đề nghiêm trọng và có thể khắc phục bằng vài thao tác đơn giản. Điều quan trọng là xác định đúng nguyên nhân: do định dạng file không được hỗ trợ, plugin xung đột hay cấu hình server. Bắt đầu bằng cách kiểm tra định dạng file, sau đó tắt plugin, rồi thêm MIME type qua functions.php hoặc plugin chuyên dụng. Nếu vẫn không được, hãy can thiệp sâu hơn vào.htaccess hoặc dùng bộ lọc wp_check_filetype_and_ext. Luôn nhớ backup trước khi sửa code và ưu tiên các giải pháp an toàn như dùng child theme và plugin uy tín. Với hướng dẫn chi tiết này, bạn hoàn toàn có thể tự xử lý lỗi mà không cần nhờ đến dịch vụ hỗ trợ.
- Theme WordPress Customizer Không Hoạt Động: Nguyên Nhân Và Cách Khắc Phục Toàn Diện
- Cách Khắc Phục Elementor Background Image Lỗi: Hướng Dẫn Chi Tiết Từ A-Z
- Khắc phục lỗi WordPress upload zip không thành công: Nguyên nhân và giải pháp toàn diện
- JobPosting Schema là gì? Hướng dẫn chi tiết từ A-Z cho người làm tuyển dụng và SEO
- WordPress Lỗi 502: Nguyên Nhân, Cách Khắc Phục Chi Tiết Từ A Đến Z
















