php 在WordPress媒体库中上传WebP图像

bttbmeg0  于 2023-03-07  发布在  PHP
关注(0)|答案(2)|浏览(159)

在Plesk黑曜石v18和Linux 7.9上运行WordPress 6.1.1和PHP 7.0.33
当我尝试通过WP的媒体库上传webp图像时,我收到以下警告:

  • Web服务器无法处理此图像。请在上载前将其转换为JPEG或PNG。*

我去检查WP的网站健康〉媒体处理,看到webp不支持.
有人能解决这个问题吗?

i7uq4tfw

i7uq4tfw1#

Wordpress从5.8版本开始增加了对WebP的支持,因此您的新版本6.1.1也支持WebP。警告屏幕截图显示您的imagick库不支持所支持格式列表中的WebP格式。
您可以尝试更新PHP版本或要求您的主机提供商确保在Imagick模块中启用libwebp for Webp支持。

如果您有SSH访问权限,您可以参考此answer了解如何自行安装/配置它。

x6492ojm

x6492ojm2#

从wordpress 5.8版开始,默认支持webp.无论如何,将下面的代码片段添加到当前主题的functions.php文件中。

function add_custom_upload_mimes( $mimes_types ) {
    $mimes_types['webp'] = 'image/webp'; // webp files
    return $mimes_types;
}
add_filter( 'upload_mimes', 'add_custom_upload_mimes' );

function add_allow_upload_extension_exception( $types, $file, $filename, $mimes ) {
    // Do basic extension validation and MIME mapping
      $wp_filetype = wp_check_filetype( $filename, $mimes );
      $ext         = $wp_filetype['ext'];
      $type        = $wp_filetype['type'];
    if( in_array( $ext, array( 'webp' ) ) ) { // if follows webp files have
      $types['ext'] = $ext;
      $types['type'] = $type;
    }
    return $types;
}
add_filter( 'wp_check_filetype_and_ext', 'add_allow_upload_extension_exception', 99, 4 );
  

function displayable_image_webp( $result, $path ) {
    if ($result === false) {
        $displayable_image_types = array( IMAGETYPE_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', 'displayable_image_webp', 10, 2 );

相关问题