avatar

tetsai

原创声明

本文由tetsai原创,转载请注明来源

网上是找不到解决方法的,都是天下文章一般抄,什么function.php添加

//enable upload for webp image files.
function webp_upload_mimes($existing_mimes) {
    $existing_mimes['webp'] = 'image/webp';
    return $existing_mimes;
}
add_filter('mime_types', 'webp_upload_mimes');

//enable preview / thumbnail for webp image files.
function webp_is_displayable($result, $path) {
    if ($result === false) {
        $displayable_image_types = array( "image/webp" );
        $info = @getimagesize( $path );

        if (empty($info)) {
            $result = false;
        } elseif (!in_array($info[2], $displayable_image_types)) {
            $result = false;
        } else {
            $result = true;
        }
    }
    return $result;
}
add_filter('file_is_displayable_image', 'webp_is_displayable', 10, 2);

我告诉你,新版本用这个方法没用了,虽然可以正常上传webp图片,但是图库是显示不出来的

我跟踪了代码,以下是我的跟踪轨迹:

includes里的class-wp-media-list-table.php文件找到<span class="media-icon <?php echo sanitize_html_class( $mime . '-icon' ); ?>"><?php echo $thumb; ?></span>,判断它是媒体库加载列表


$thumb用了wp_get_attachment_image 函数获取了img代码,然后继*层层跟踪
-> image_hwstring(wp_get_attachment_image_src)
->image_downsize
->image_get_intermediate_size
->wp_get_attachment_metadata
->get_post_meta
->get_metadata

跟到后面就烦了,索性就改image_hwstring吧,只要图片像素不是1x1就好了!

打开include目录了的media.php,修改

function image_hwstring( $width, $height ) {
    $out = '';
	if ( $width ) {
		$out .= 'width="' . intval( $width ) . '" ';
	}
	if ( $height ) {
		$out .= 'height="' . intval( $height ) . '" ';
	}
	return $out;
}

改成

function image_hwstring( $width, $height ) {
    $out = '';
    if(!($width==1&&$height==1)){
    	if ( $width ) {
    		$out .= 'width="' . intval( $width ) . '" ';
    	}
    	if ( $height ) {
    		$out .= 'height="' . intval( $height ) . '" ';
    	}
    }
	return $out;
}

效果如图:

能够正常显示了~

不足之处:

这种显示方式暂时还不能正常显示,如果能继***下去,也许能找到方法吧

发表评论

电子邮件地址不会被公开。 必填项已用*标注