Nenhuma otimização é insignificante quando o assunto é o desempenho web. Com o passar do tempo, muitos desses pequenos truques e otimizações podem começar a reduzir ligeiramente o tempo total de carregamento. Em um artigo anterior, compartilhamos com você a forma que permite desativar emojis no WordPress. Hoje queremos compartilhar com você como desativar os embutimentos no WordPress.

Quando a empresa lançou o WordPress 4.4, eles colocaram o recurso oEmbed no core. Você provavelmente já viu ou usou ele antes. Possibilita que os usuários incorporem vídeos do YouTube, tweets e muitos outros recursos em seus sites, tendo apenas de colar uma URL, o qual o WordPress converte automaticamente em um embutimento e apresenta uma visualização em tempo real no editor visual. Por exemplo, nós colámos esse URL do Twitter: https://twitter.com/kinsta/status/760489262127120385 e foi convertido em aquilo que você vê abaixo. Você pode ver a lista oficial de tipos de embutimento suportados.

Tweet embutido pelo oEmbed
Tweet embutido pelo oEmbed

O WordPress tem utilizado oEmbed há muito tempo, mas com essa atualização, o próprio WordPress se tornou um provedor do oEmbed. Esse recurso é útil para muitas pessoas e você pode querer que ele continue ativo. Contudo, ele também gera uma solicitação HTTP adicional no seu site WordPress para carregar o arquivo wp-embed.min.js. E isso é feito em todas as páginas. Apesar de esse arquivo ter apenas 1.7 KB, coisas pequenas como essas vão acumulando com o tempo. A solicitação em si por vezes é mais importante do que o tamanho do conteúdo baixado.

(Leitura sugerida: Como corrigir o problema do Facebook no WordPress).

wp-embed.min.js
wp-embed.min.js

Desativar Embutimentos no WordPress

Existem alguns métodos para desativar os embutimentos no WordPress. Você pode fazer isso com um plugin grátis, com código ou fazendo o inline do JS minificado.<

1. Desativar Embutimentos no WordPress com um Plugin

A primeira forma de desativar os embutimentos é simplesmente usar um plugin gratuito chamado Disable Embeds, desenvolvido por Pascal Birchler, um dos principais colaboradores do WordPress.

Plugin Disable Embeds para WordPress
Plugin Disable Embeds para WordPress

Este plugin é muito leve, tem apenas 3 KB para ser exato. No momento em que esse artigo é escrito, possui mais de 10,000 instalações ativas com uma avaliação de 4.8 em 5 estrelas. Você pode baixar ele no repositório do WordPress ou procurando por ele no seu painel WordPress em “Adicionar Novos” plugins. Não existe nada para configurar, só precisa instalar, ativar e o arquivo JavaScript adicional será removido. Inclui o seguinte:

  • Impede que outras pessoas embutam seu site.
  • Impede que você embuta outros sites não permitidos.
  • Desativa o carregamento do arquivo JavaScript no seu site WordPress.

Você também pode incorporar elementos do YouTube e do Twitter usando os scripts de iframe embutidos. Pode também usar um plugin premium como o perfmatters (desenvolvido por um membro da equipe Kinsta), que permite desabilitar embutimentos juntamente com outras otimizações para seu site WordPress.

Desativar embutimentos com o plugin perfmatters
Desativar embutimentos com o plugin perfmatters

2. Desativar Embutimentos no WordPress com Código

Se você não quiser instalar outro plugin, você também pode simplesmente desabilitar os códigos embutidos. Comece criando um backup do seu site, depois crie um tema infantil para que suas mudanças não se percam se você atualizar seu tema. Depois, adicione o seguinte ao arquivo functions.php do seu child theme. Nota: código proveniente do plugin Disable Embeds acima.

Importante! Editar o código-fonte de um tema WordPress pode quebrar seu site se não for executado corretamente. Se você não tiver total confiança para fazer isso, por favor contate um desenvolvedor primeiro.
function disable_embeds_code_init() {

 // Remove the REST API endpoint.
 remove_action( 'rest_api_init', 'wp_oembed_register_route' );

 // Turn off oEmbed auto discovery.
 add_filter( 'embed_oembed_discover', '__return_false' );

 // Don't filter oEmbed results.
 remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 );

 // Remove oEmbed discovery links.
 remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );

 // Remove oEmbed-specific JavaScript from the front-end and back-end.
 remove_action( 'wp_head', 'wp_oembed_add_host_js' );
 add_filter( 'tiny_mce_plugins', 'disable_embeds_tiny_mce_plugin' );

 // Remove all embeds rewrite rules.
 add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );

 // Remove filter of the oEmbed result before any HTTP requests are made.
 remove_filter( 'pre_oembed_result', 'wp_filter_pre_oembed_result', 10 );
}

add_action( 'init', 'disable_embeds_code_init', 9999 );

function disable_embeds_tiny_mce_plugin($plugins) {
    return array_diff($plugins, array('wpembed'));
}

function disable_embeds_rewrites($rules) {
    foreach($rules as $rule => $rewrite) {
        if(false !== strpos($rewrite, 'embed=true')) {
            unset($rules[$rule]);
        }
    }
    return $rules;
}

Ou também pode usar a função wp_dequeue_script.

function my_deregister_scripts(){
 wp_dequeue_script( 'wp-embed' );
}
add_action( 'wp_footer', 'my_deregister_scripts' );

3. Fazer o Inline do JS Minificado

Uma terceira opção é pegar os conteúdos do arquivo wp-embed.min.js e embutir eles inline. Isso deve ser feito apenas com arquivos pequenos ou quando não tem muito código envolvido. Isso é usado para as situações em que simplesmente pretende se livrar da solicitação HTTP, mas mantendo o suporte para embutimentos.