Cho phép WordPress tải lên hình ảnh WEBP

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.

Cho phép tải lên định dạng WEBP cho WordPress

// 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.

Subscribe
Notify of
guest
7 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Nam Hải
1 year ago

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á.

vi đình tuấn
1 year ago
Reply to  Nam Hải

Cho e hỏi cái tệp function. Php nó ở chỗ nào vậy

Quý
Quý
1 year ago

Em lưu vào thì nó báo lỗi ạ

An Phat
11 months ago

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

trantuliem
10 months ago

Vậy cái bạn chỉ chỉ cần sửa file functions.php là được phải không ạ?