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

Cập nhật lần cuối vào

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.

Theo dõi
Thông báo của
guest

9 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận
Nam Hải
5 năm trước

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
5 năm trước
Trả lời  Nam Hải

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

Quý
Quý
5 năm trước

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

An Phat
5 năm trướ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

trantuliem
5 năm trước

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

Huy Thành
1 năm trước

Cách này còn hiệu quả ko ạ, mình paste code vào function thì báo lỗi