Função para trocar images SVG pela tag SVG inline no WordPress
A quantidade de imagens numa página pode impactar a velocidade de carregamento deixando o site mais lento. Uma das melhores formas de diminuir este impacto é reduzir o número de requisições ao adicionar as imagens no próprio corpo da página. Isso também contribui para melhorar o SEO do site e, da mesma forma, aumentar a pontuação no PageSpeed Insights, um sistema do Google que mede a qualidade de uma página web.
Mas como a SVG inline funciona?
Segue abaixo um exemplo de imagem que pode ser otimizada:
<p>
<img src="phone.svg" alt="Logo do Site">
</p>
O trecho de código acima pode ser trocado pelo código SVG original:
<p>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path d="M6.62,10.79C8.06,13.62 10.38,15.94 13.21,17.38L15.41,15.18C15.69,14.9 16.08,14.82 16.43,14.93C17.55,15.3 18.75,15.5 20,15.5A1,1 0 0,1 21,16.5V20A1,1 0 0,1 20,21A17,17 0 0,1 3,4A1,1 0 0,1 4,3H7.5A1,1 0 0,1 8.5,4C8.5,5.25 8.7,6.45 9.07,7.57C9.18,7.92 9.1,8.31 8.82,8.59L6.62,10.79Z"/>
</svg>
</p>
Ao fazer isso, colocamos o código que estava dentro do arquivo phone.svg
para ser exibido diretamente na página. Isso faz diminuir o número de requisições e, consequentemente, aumentar a velocidade de carregamento da página.
Função para trocar images SVG no WordPress
Inicialmente, você não precisa trocar as imagens uma a uma. Para facilitar esse processo, eu elaborei uma função para trocar automaticamente cada imagem SVG da página pela sua respectiva tag SVG inline:
<?php
function wp_svg_inline_replacer( $matches) {
$src = $matches[1];
$parts = explode('/wp-content/', $src);
$svg = file_get_contents(WP_CONTENT_DIR . '/' . $parts[1]);
$svg = preg_replace('/<\?xml.*\?>/', '', $svg);
$svg = preg_replace('/<\!DOCTYPE[^>]*>/', '', $svg);
return trim( $svg);
}
function wp_svg_inline_filter( $content) {
global $post;
$pattern = "/<img.*src=\"(.*\.svg)\"(.*) \/>/i";
$content = preg_replace_callback( $pattern, 'wp_svg_inline_replacer', $content);
return $content;
}
add_filter('the_content','wp_svg_inline_filter');
add_filter('get_custom_logo','wp_svg_inline_filter');
Dessa forma, a função irá trocar cada tag <img />
pelo seu respectivo código SVG de acordo com o arquivo SVG que foi citado no atributo src da tag. Essa função está vinculada aos filtros the_content
referente ao conteúdo da página e get_custom_logo
referente a logo do site (caso seja um arquivo SVG).
Adicionando suporte SVG ao WordPress
Originalmente, o WordPress não vem com suporte ao SVG, então para poder adicionar os arquivos SVG ao seu site é preciso instalar um plugin. O melhor plugin para isso é o Safe SVG, pois, além de viabilizar os arquivos SVG, ele também faz uma limpeza no arquivo reduzindo seu tamanho do arquivo e eliminando qualquer ameaça que possa estar oculta no código.
Existe ainda a possibilidade de adicionar o suporte ao SVG sem o uso de plugins caso queira abrir mão da comodidade bem como a segurança que o plugin Safe SVG traz. Para isso, basta adicionar seguinte trecho de código abaixo ao seu functions.php
:
<?php
function cc_mime_types( $mimes) {
$mimes['svg'] = 'image/svg+xml';
return $mimes;
}
add_filter('upload_mimes', 'cc_mime_types');
Em suma, ao implementar a troca de imagens SVG por tags SVG inline no WordPress e adicionar o suporte adequado, é possível otimizar a velocidade de carregamento da página, reduzir o número de requisições e melhorar o SEO do site. Com essas medidas, seu site estará mais bem preparado para oferecer uma experiência de navegação mais rápida e agradável aos visitantes, além de obter melhores classificações nos mecanismos de busca. Aproveite essas práticas para potencializar o desempenho do seu site e aprimorar a presença online!
O que achou do artigo?
Escreva um comentário, deixe-me saber o que achou do artigo. Se tens uma dúvida basta perguntar:
Resposta ao comentário:
10 Comentários