Como carregar o Contact Form 7 apenas na página de contato?

Se você usa o plugin Contact Form 7 para gerar formulários de contato em seu site e é tão aficcionado por performance quanto eu, deve ter notado que este plugin adiciona seus arquivos .js e .css em TODAS as páginas de seu site mesmo que eles não sejam usados nelas.

Ao ler o parágrafo acima, você pode ter ficado preocupado e ter pensado até em parar de usar tal plugin e começar a usar outroo para exercer tal função, mas a boa notícia é que é estremamente fácil corrigir este problema e carregar apenas os recursos do plugin em uma página específica do seu blog WordPress. Simplesmente criando algumas linhas de código no arquivo functions.php do seu tema atual, você pode controlar quando scripts e folhas de estilo são carregados para este e muitos outros plugins que você instalou. Vejamos como fazer isso para o contato do plugin Form 7.

Cancelando o carregamento de Scripts e Stylesheets

Muitos plugins utilizam a função wp_enqueue_script do WordPress para carregar arquivos de suporte Javascript e a função wp_enqueue_style para carregar qualquer estilo usado pelo plugin. Entretanto, nem todos os plugins usam estas duas funções, pois podem fazer tal chamada através do comando echo. Se um plugin usa as funções do WordPress, você pode usar duas outras funções WordPress para cancelar o registro dos recursos quando não são necessários. As duas funções WordPress são: wp_deregister_script e wp_deregister_style.

Para cancelar o registro de uma folha de estilo ou script você precisará utilizar as funções acima e você pode facilmente encontrar isso através de pesquisa através dos arquivos do plugin até encontrar onde a folha de estilo ou script é registrado.

No caso do Contact Form 7, as seguintes linhas de código são usados ​​para registrar o script e estilo:

wp_enqueue_script( 'contact-form-7', wpcf7_plugin_url( 'scripts.js' ), array( 'jquery', 'jquery-form' ), WPCF7_VERSION, $in_footer );
wp_enqueue_style( 'contact-form-7', wpcf7_plugin_url( 'styles.css' ), array(), WPCF7_VERSION, 'all' );

O trecho acima destacado em negrito se refere ao nome que é dado a função que carrega tais itens, e você precisará saber exatamente isso para poder utilizar o wp_deregister.

Alterando o carregamento de Scripts e Stylesheets do Contact Form 7

Para carregar o script e css do Contact Form 7 apenas na página de Contato, adicione o seguinte snippet em seu arquivo functions.php:

function guga_deregister_javascript() {
  if ( !is_page('Contato') ) {
    wp_deregister_script( 'contact-form-7' );
  }
}

function guga_deregister_styles() {
  if ( !is_page('Contato') ) {
    wp_deregister_style( 'contact-form-7' );
  }
}

add_action( 'wp_print_scripts', 'guga_deregister_javascript', 100 );
add_action( 'wp_print_styles', 'guga_deregister_styles', 100 );

O script acima irá checar se a página a ser carregada não se chama” Contato” e se não for tal página irá “barrar” o carregamento dos scripts do Contact Form 7, fazendo tal script ser carregado apenas na página correta. Logicamente você deve alterar o nome da página para o nome ou ID de sua página,

Se você desejar fazer o mesmo com outros plugins você pode adicionar mais alguns if’s e wp_deregister e fazer a verificação na mesma função, mas você precisará pesquisar o nome usado para tal.

Dica simples que impactará diretamente no tempo de carregamento de seu site!

Update: Conforme comentário do Gabriel e dica do próprio site do WordPress, destacamos que para total compatibilidade com o WP 3.3 e versões posteriores, você deve utilizar a função wp_enqueue_scripts no lugar de wp_print_styles. Mais informações no Make WordPress.

Posts Similares

  • Funções de usuários e Capacidades no WordPress – Parte 3: Um exemplo prático

    Este artigo é a parte 3 de 3 da série Funções de usuários e Capacidades do WordPress Funções de usuários e Capacidades do WordPress – Parte 1: O básico Funções de usuários e Capacidades no WordPress – Parte 2: Funções interessantes Funções de usuários e Capacidades no WordPress – Parte 3: Um exemplo prático Esta…

  • Como excluir uma categoria do feed RSS

    Temos o seguinte cenário: em um blog WordPress, temos uma categoria que não deve ser exibida via RSS.. como proceder para que tal categoria seja removida ? Simples ! Adicione a função abaixo no arquivo functions.php function myFilter($query) { if ($query->is_feed) {  $query->set(‘cat’,’-5′); } return $query; } add_filter(‘pre_get_posts’,’myFilter’); Lembre-se de alterar o id da categoria…

  • Corrigindo o erro ‘Allowed memory size Exhausted’ no WordPress

    Um pequenho hackzinho que pode ajudar aqueles que passaram pelo mesmo problema que passamos por aqui. Ao atualizar nosso site para o WordPress 2.8 (após um lógico backup de tudo), a seção administrativa do site apresentava a seguinte mensagem de erro: Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 2348617 bytes)…

  • Como exibir seu número total de seguidores no Twitter e Feedburner

    Recebi alguns emails nesta semana perguntando como exibir no blog o número de seguidores que o usuário X tem no Twitter. Alguns sites disponibilizam scripts para fazer tal exibição da contagem, porém em sua grande maioria não disponibilizam formas de se trabalhar este resultado. Pesquisando sobre como buscar tal resultado com maior liberdade de customização,…

  • Bloqueie Spammers de pegar os e-mails do seu WordPress

    Olá a todos. Depois de muito tempo volto para mostrar uma forma de bloquear que os spammers usem os emails do seu WordPress para uso de spam. Resolvi vir aqui depois de ler um Post no grupo do WordPress no Facebook, onde uma pessoas queria pegar os e-mails dos comentários de outros sites em WordPress….

  • WordPress filters – Lista completa de filtros!

    WordPress filters – Lista completa de filtros!

    Esta lista de dicas explora um conceito fundamental no desenvolvimento do WordPress: filtros! No WordPress, os filtros permitem que os desenvolvedores interceptem e modifiquem dados à medida que uma página do WordPress está sendo carregada, antes de enviá-los ao navegador ou salvá-los no banco de dados. Você pode ler mais sobre filtros neste artigo em…

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

19 Comentários

    1. Uso o nome apenas em ambiente de testes, normalmente uso mesmo o ID.. Como usei tal item em nosso ambiente de testes antes de postar, acabou ficando com o nome mesmo, mas as 2 formas são válidas 🙂
      Valeu pela observação!

    2. Já acho que isso depende do ponto de vista.. eu particularmente prefiro usar o nome ou slug da página, pois se a página for apagado e depois criada novamente, não terei problemas.

      Creio que isso é mais provável de acontecer do que mudar o nome da página.

      Fora que, usando o nome ou slug fica muito mais legível seu código. #ficaadica

  1. Guga, na documentação do Contact Form 7 indica a inclusão do seguinte código no wp-config.php para a retirada do script e folha de estilo respectivamente:

    define(‘WPCF7_LOAD_JS’, false);
    define(‘WPCF7_LOAD_CSS’, false);

    1. Bom você mencionar isso! Tem mesmo esta forma indicada pelo desenvolvedor do plugin, entretanto a forma acima foi usada pra mostrar que além de ser possível no Contact Form 7, é possível usar o mesmo método para outros plugins.. 🙂

  2. Excelente dica!!! Já tinha tentando fazer outras coisas para evitar o carregamento do plugin, mas não consegui. Agora ficou perfeito!!!!

    Obrigado

  3. Olá! Infelizmente quando eu adiciono esse código no functions.php, tá dando um erro de sintaxe! Eu acho que são as aspas entre contact-form-7… Tem como você me confirmar se é isso mesmo?

    1. Aqui está funcionando normalmente Vítor, usamos este script aqui no site mesmo e está funcionando perfeitamente.

      Remova as aspas e as digite de novo, as vezes quando você copia códigos pelo navegador as aspas vem num formato incompatível mesmo!

  4. Legal o post.

    Mas em vez de usar is_page(), eu checo se existe o shortcode do plugin no content da pagina. E caso eu use algum Template, eu uso o is_page_template().

    ficaria algo desse tipo para checar se existe o shortcode [contact-form-7] no content:

    add_action( ‘wp_print_scripts’, ‘my_deregister_javascript’, 100 );
    function my_deregister_javascript() {
    global $post;

    $postcontent = $post->post_content;
    $shortcode = ‘[contact-form-7]’;
    $strpos = strpos($postcontent, $shortcode);

    if ( $strpos === false ) {
    wp_deregister_script( ‘contact-form-7’ );
    }
    }

    Abs

  5. Bacana a dica Guga, tenho uma pequena sugestão para melhora-la e evitar um erro com o WordPress 3.3

    “Use wp_enqueue_scripts, not wp_print_styles, to enqueue scripts and styles for the frontend ”

    https://make.wordpress.org/core/2011/12/12/use-wp_enqueue_scripts-not-wp_print_styles-to-enqueue-scripts-and-styles-for-the-frontend/

    Você autoriza copiar o artigo para o site da comunidade brasileira, o nosso https://wp-brasil.org?

    Abraços,
    Gabriel

    1. Obrigado pela dica Gabriel, adicionamos ela ao final do post.
      Pode usar o artigo na WP Brasil sim, só manter o link para esta postagem, ok?
      Lembre-se também que reproduzir a matéria por completo pode não ser o ideal por isso gerar conteúdo duplicado..
      Abraços!

  6. Olá Guga! muito bom o artigo.

    Sou assinante de seu boletim informativo e gosto muito de suas dicas.

    Bom, tenho um site de emprego e utilizo o gerenciador de conteúdo WordPress.
    Como recebo muitos CV por e-mail, através de preenchimento de formulário, gostaria de criar um sistema online de cadastro de CV online onde a pessoa não precisasse enviar para mim, mas que ficasse disponível para consulta online.

    Eu consigo fazer isso no WordPress? Tem algum plugin específico para isso?

    Abraços,

    Fabio Cabrera

  7. Prezado Guga,

    por favor, em quais arquivos incluir os comandos?
    Em quais arquivos aparecem os comandos de carga?
    Como fazer quando tenho 2 paginas de Contato (Fale conosco e Trabalhe conosco)?
    Como altero a distribuição dos campos da página de contato?
    Fiquei confuso…

  8. Nó, adorei essa dica, muito boa, porque formulários são sempre tão difíceis de implementar hein?!
    Tenho muito problema com alguns que na hora de sair para enviar dá pau, não sei pq. 🙁