Este código é uma joia para quem trabalha com o WordPress e deseja otimizar o desempenho do seu site, especialmente quando se trata de carregamento de imagens. Com algumas adições ao arquivo `functions.php` do seu tema, ele oferece uma solução automática para converter imagens carregadas na galeria para o formato WebP, conhecido por sua eficiência em termos de qualidade e tamanho de arquivo. Além disso, ele introduz suporte para imagens SVG e WebP, ampliando as possibilidades de uso desses formatos no seu site WordPress. Aqui está um resumo detalhado de suas funcionalidades:

Conversão Automática para WebP

Quando você carrega uma imagem JPEG ou PNG na galeria do WordPress, o código automaticamente verifica se o arquivo atende aos critérios para conversão. Se a imagem for maior que 5MB, ela será rejeitada para evitar o uso excessivo de recursos. Para imagens dentro do limite, o código procede com a conversão, garantindo que elas não ultrapassem 1920 pixels de largura. Isso é crucial para manter a velocidade do site, pois imagens grandes podem desacelerar significativamente o carregamento das páginas.

Customização de Nomes de Arquivo

Uma característica interessante é a customização dos nomes de arquivo. Antes de salvar a nova imagem WebP, o código remove as extensões originais (.jpeg, .jpg, .png) e adiciona um sufixo personalizado (“-wpgptcode”). Isso não apenas ajuda na organização dos arquivos, mas também facilita a identificação das imagens que foram otimizadas pelo seu código.

Remoção de Metadados Desnecessários

O código limpa os dados das imagens removendo legendas e títulos desnecessários. Isso é benéfico porque metadados extras podem aumentar o tamanho do arquivo da imagem, o que, por sua vez, pode afetar negativamente o tempo de carregamento do site.

Suporte para SVG e WebP

Além da conversão de imagens, o código estende o suporte do WordPress para incluir arquivos SVG e WebP, formatos que não são aceitos por padrão. Isso permite que você tire proveito da versatilidade e eficiência do SVG para gráficos vetoriais e do WebP para imagens bitmap, ambos oferecendo qualidade superior com tamanhos de arquivo menores em comparação com formatos mais antigos.

Facilitação da Inserção de Imagens WebP

Por fim, o código garante que as imagens WebP possam ser facilmente inseridas na biblioteca de mídia e usadas em todo o site. Isso é particularmente importante, pois o WordPress, por padrão, pode ter limitações quanto à inserção de formatos de arquivo específicos na biblioteca de mídia.

Em suma, incorporar este código no seu site WordPress pode significativamente melhorar a velocidade de carregamento das páginas, ao reduzir o tamanho dos arquivos de imagem sem comprometer a qualidade. Essa otimização de imagem não apenas melhora a experiência do usuário, mas também pode contribuir positivamente para o SEO do seu site, já que os motores de busca tendem a favorecer sites mais rápidos.

				
					function convert_uploaded_images_to_webp($image_data) {
    // Verifica se o formato da imagem é JPEG ou PNG
    if ($image_data['type'] != 'image/jpeg' && $image_data['type'] != 'image/png') {
        return $image_data;
    }
    // Limita o tamanho máximo de upload de arquivos para 5MB
    if ($image_data['size'] > 5 * 1024 * 1024) {
        return new WP_Error('file_too_large', 'O tamanho do arquivo excede o limite permitido.');
    }
    // Verifica se a imagem já possui metadados
    $image_id = attachment_url_to_postid($image_data['url']);
    $metadata = wp_get_attachment_metadata($image_id);
    if ($metadata) {
        return $image_data;
    }
    // Carrega a imagem
    $image = wp_get_image_editor(sanitize_text_field($image_data['file']));
    if (is_wp_error($image)) {
        return $image_data;
    }
    // Redimensiona a imagem para no máximo 1920 de largura
    $size = $image->get_size();
    $dimensions = wp_constrain_dimensions($size['width'], $size['height'], 1920);
    $new_width = $dimensions[0];
    $new_height = $dimensions[1];
    $image->resize($new_width, $new_height);
    // Altera o nome do arquivo para adicionar o sufixo "-wpgptcode" e remover o sufixo .jpeg ou .jpg
    $filename = str_replace('.jpeg', '', $image_data['file']);
    $filename = str_replace('.jpg', '', $filename);
	$filename = str_replace('.png', '', $filename);
    $filename = $filename . '-wpgptcode.webp';
    // Remove a legenda e o título da imagem
    $image_data['caption'] = wp_strip_all_tags(esc_attr($image_data['caption']));
    $image_data['title'] = wp_strip_all_tags(esc_attr($image_data['title']));
    // Salva a imagem em formato WebP
    $saved = $image->save($filename, 'image/webp');
    if (is_wp_error($saved)) {
        return $image_data;
    }
    // Renomeia o arquivo para alterar a extensão
    $original_filename = $image_data['file'];
    $new_filename = str_replace('.jpeg', '', $original_filename);
    $new_filename = str_replace('.jpg', '', $new_filename);
	$new_filename = str_replace('.png', '', $new_filename);
    $new_filename = $new_filename . '-wpgptcode.webp';
    rename($original_filename, $new_filename);
    // Atualiza os dados da imagem para os da nova imagem em formato WebP
    $image_data['file'] = $new_filename;
    $image_data['type'] = 'image/webp';
    return $image_data;
}
// Aceites de WEBP e SVG no WordPress
add_filter('wp_handle_upload', 'convert_uploaded_images_to_webp');
function add_svg_support( $mimes ) {
  $mimes['svg'] = 'image/svg+xml';
  return $mimes;
}
add_filter( 'upload_mimes', 'add_svg_support' );
// Adicionar suporte a WebP
function add_webp_support( $mime_types ) {
    $mime_types['webp'] = 'image/webp';
    return $mime_types;
}
add_filter( 'upload_mimes', 'add_webp_support' );
// Permitir a inserção de imagens WebP na biblioteca de mídia
function webp_upload_filter( $file ) {
    $file['type'] = 'image/webp';
    $file['ext'] = 'webp';
    return $file;
}
add_filter( 'wp_check_filetype_and_ext', 'webp_upload_filter', 10, 4 );
				
			

Categorized in:

Imagens, WordPress,