WebP là một loại định dạng hình ảnh được tạo ra bởi Google, với mục đích thay thế cho JPEG, PNG và GIF, đồng thời hỗ trợ tốt nén, hình ảnh trong suốt và các hiệu ứng. Nếu bạn muốn cho phép WordPress có thể tải lên hình ảnh định dạng .webp thì bạn thêm đoạn code sau vào tập tin functions.php
của giao diện.
// Allow upload WEBP image mime type function hocwp_theme_upload_mimes_filter( $mimes ) { $mimes['webp'] = 'image/webp'; return $mimes; } add_filter( 'upload_mimes', 'hocwp_theme_upload_mimes_filter' ); // Update WEBP image file type function hocwp_theme_wp_check_filetype_and_ext_filter( $types, $file, $filename ) { if ( is_file( $file ) && false !== strpos( $filename, '.webp' ) ) { $types['ext'] = 'webp'; $types['type'] = 'image/webp'; } return $types; } add_filter( 'wp_check_filetype_and_ext', 'hocwp_theme_wp_check_filetype_and_ext_filter', 10, 3 ); // Mark WEBP image as real image function hocwp_theme_file_is_displayable_image_filter( $result, $path ) { if ( HT()->is_file( $path ) ) { $info = pathinfo( $path ); if ( isset( $info['extension'] ) && 'webp' == $info['extension'] ) { $result = true; } } return $result; } add_filter( 'file_is_displayable_image', 'hocwp_theme_file_is_displayable_image_filter', 10, 2 ); // Re-update WEBP image metadata function hocwp_theme_wp_get_attachment_metadata_filter( $data, $media_id ) { $path = get_attached_file( $media_id ); if ( HT()->is_file( $path ) ) { $info = pathinfo( $path ); if ( isset( $info['extension'] ) && 'webp' == $info['extension'] ) { $data = wp_generate_attachment_metadata( $media_id, $path ); wp_update_attachment_metadata( $media_id, $data ); } } return $data; } add_filter( 'wp_get_attachment_metadata', 'hocwp_theme_wp_get_attachment_metadata_filter', 10, 2 );
Nếu bạn không thích chèn vào tập tin functions.php
của giao diện thì bạn có thể thử viết plugin WordPress để sử dụng lâu dài nhé. Chúc bạn thành công.
mình cứ nghĩ WordPress không thể tải lên hình ảnh WEBP chứ, đọc xong mình thấy mình còn thiếu kiến thức quá.
Cho e hỏi cái tệp function. Php nó ở chỗ nào vậy
Em lưu vào thì nó báo lỗi ạ
Bạn phải chỉnh sửa lại chứ không cóp dán nguyên được. Trong nội dung code có mấy chỗ mình dùng hàm viết sẵn của bên mình nên bạn copy sẽ không dùng được.
Vậy bác có biết cái plugin nào có thể chuyển hình từ ảnh bình thường sang định dạng WebP không
Vậy cái bạn chỉ chỉ cần sửa file functions.php là được phải không ạ?
Uhm bạn, tuy nhiên bạn xem trong nội dung hàm có chỗ nào chưa phù hợp thì sửa lại nhé.
Cách này còn hiệu quả ko ạ, mình paste code vào function thì báo lỗi
WordPress phiên bản mới đã mặc định hỗ trợ WEBP rồi nhé.