Habilitar leitura de imagens no formato WEBP

WebP é um formato de imagem desenvolvido pelo Google que permite criar arquivos muito menores sem perdas de qualidade.

Em comparação com o JPEG, o formato WebP permite criar imagens até 40% menores sem nenhuma perda na qualidade.

Se você utiliza o WordPress e já tentou subir uma imagem, provavelmente você tenha encontrado a seguinte mensagem abaixo:

“Desculpe, este tipo de arquivo não é permitido por razões de segurança do WordPress”
Se você buscou um plugin para solucionar a mensagem: “Desculpe, este tipo de arquivo não é permitido por razões de segurança no WordPress”, saiba que este é um dos erros mais comuns que aparecem, e não há necessidade de instalar algum plugin.

Você poderá resolver facilmente copiando e colando o arquivo abaixo no seu funtions.php do seu tema:

/**
 * Sets the extension and mime type for .webp files.
 *
 * @param array  $wp_check_filetype_and_ext File data array containing 'ext', 'type', and
 *                                          'proper_filename' keys.
 * @param string $file                      Full path to the file.
 * @param string $filename                  The name of the file (may differ from $file due to
 *                                          $file being in a tmp directory).
 * @param array  $mimes                     Key is the file extension with value as the mime type.
 */
<?php
add_filter( 'wp_check_filetype_and_ext', 'wpse_file_and_ext_webp', 10, 4 );
function wpse_file_and_ext_webp( $types, $file, $filename, $mimes ) {
    if ( false !== strpos( $filename, '.webp' ) ) {
        $types['ext'] = 'webp';
        $types['type'] = 'image/webp';
    }

    return $types;
}

/**
 * Adds webp filetype to allowed mimes
 * 
 * @see https://codex.wordpress.org/Plugin_API/Filter_Reference/upload_mimes
 * 
 * @param array $mimes Mime types keyed by the file extension regex corresponding to
 *                     those types. 'swf' and 'exe' removed from full list. 'htm|html' also
 *                     removed depending on '$user' capabilities.
 *
 * @return array
 */
add_filter( 'upload_mimes', 'wpse_mime_types_webp' );
function wpse_mime_types_webp( $mimes ) {
    $mimes['webp'] = 'image/webp';

  return $mimes;
}

Ou usar os códigos abaixo, que eu havia pesquisado há uns 10 anos atrás…

Acrescenta no htacess

<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteCond %{HTTP_ACCEPT} image/webp
	RewriteCond %{DOCUMENT_ROOT}/$1.webp -f
	RewriteRule ^(wp-content/uploads.+)\.(jpe?g|png)$ $1.webp [T=image/webp,E=accept:1]
</IfModule>

<IfModule mod_headers.c>
	Header append Vary Accept env=REDIRECT_accept
</IfModule>

AddType image/webp .webp

Acrescenta no functions

function img_webp( $existing_mimes ) {
    // agrega el formato webp a la lista de MIME TYPES de WordPress
    $existing_mimes['webp'] = 'image/webp';
    return $existing_mimes;
}
add_filter( 'mime_types', 'img_webp' );

fonte: https://jamesrmoro.me/permitir-imagens-webp-no-wordpress/
acesso em : 05/06/2021