Como utilizar javascript no WordPress de forma correta?

Muitos desenvolvedores, ao criar seus temas, fazem chamadas para arquivos javascript da forma errada, não seguindo o padrão que o WordPress recomenda. Vamos aprender esse padrão? Vem comigo 😉

Dois problemas enquanto estiver usando JavaScript em Projetos WordPress

Existem basicamente dois problemas importantes que você pode encontrar se você injetar arquivos JavaScript diretamente no WordPress com código HTML:

  • Duplicação de códigos na mesma página: Digamos que você criou um plugin para o WordPress e você deseja inclui o jQuery. Você imprime a tag de script apropriada e funciona! Mas e se um outro plugin quer usar jQuery também – como é que ele saberia que o jQuery já está carregado na <head>? Não saberia, e mesmo se outro plugin jQuery inclui o caminho certo, a página ainda teria duas instâncias do jQuery, o que pode gerar conflitos.
  • Problemas com tradução: Vamos dizer que você está criando uma galeria lightbox e você precisa passar strings como “Próximo”, “Anterior” e “Imagem X de Y”. Como você faz isso sem imprimir linhas de JavaScript na <head> ?

A maneira correta de usar Javascript no WordPress

A solução para o primeiro problema é simplesmente registrar os javascripts da maneira correta e pré-carregar todos os arquivos Js chamados de maneira certa também. com duas funções: wp_register_script() e wp_enqueue_script().

A solução para o segundo problema é simples: A função wp_localize_script() permitee passar dados traduzíveis em seu código JS.

Registrando arquivos JavaScript

Antes de pré-carregar the JavaScript files, você deve os registrar. E isso é simples usando a função wp_register_script():

<?php wp_register_script( $nome, $url, $dependencias, $versao, $carregar_no_rodape ); ?>

Alguns dos parâmetros:

  • Nome (string, valor obrigatório): Nome do script. Você pode escolher o nome que quiser, se certificando que tal nome não está sendo usado por nenhum outro script.
  • URL (string, valor obrigatório): A URL do script.
  • Dependências (array, opcional): Nome de outros scripts que dependem deste. Por exemplo, se seu script depende do jQuery, ele precisará ser carregado após o jQuery. Neste caso, você deve usar array (‘jquery’) para este parâmetro.
  • Versão (string, opcional): O número da versão para o seu script. Você pode escolher entre passar uma string, definindo o parâmetro como nulo ou deixá-lo vazio. Se você configurá-lo para string, que vai ser adicionado ao que vai ser impresso como my-script.js?ver = 1.2. Se você deixar o parâmetro vazio, a versão da sua instalação do WordPress será adicionado como o número da versão. Se você configurá-lo para null, nada será adicionado.
  • Carregar no rodapé (booleano, opcional): Quando você pré-carregar este script registrado, ele será carregado na seção <head>. Mas se você definir esse parâmetro como true, ele será carregado logo antes do fechamento da tag <body>.

Voce também pode “desregistrar” scripts que já forem registrados pelo core do WordPress ou por outros plugins com a função wp_deregister_script(). Só é necessário o parâmetro ‘nome’, passando o nome do script registrado, claro.

Você pode checar o estado de um script com a função wp_script_is(). Por exemplo, se você quiser checar se ‘my-script‘ está pré-registrada, simplesmente use wp_script_is( ‘my-script’, ‘queue’ ) em um if.

Modos de pré-registrar seus scripts

A maneira certa de pré-registrar seus scripts, e estilos também, é usar os ‘hooks’ abaixo:

  • wp_enqueue_scripts – para pré-registrar scripts no front-end do seu site.
  • admin_enqueue_scripts – para pré-registrar scripts no back-end do seu site.
  • login_enqueue_scripts – para pré-registrar scripts na tela de login.
<?php
function my_scripts_loader() {
    wp_enqueue_script( 'my-js', 'filename.js', false );
}
add_action( 'wp_enqueue_scripts', 'my_scripts_loader' );
?>

Por questões de compatibilidade, você não deve usar os  hooks admin_print_scripts() e admin_print_styles().

Passando dados traduzíveis dentro do JavaScript

Quando pensamos na localização (localização pensando em língua usada), o JavaScript sempre tem um problema com o WordPress… porque muitas pessoas não conhecem a função wp_localize_script():

<?php
$l10n_data = array(
    'nextItem' => __( 'Next', 'my-script' ),
    'prevItem' => __( 'Previous', 'my-script' ),
    'imageTitle' => __( 'Image %d of %d', 'my-script' )
);

wp_localize_script(
    'name-of-the-script', // (requirido) o nome do script, 'my-script' pr exemplo
    'nameOfTheObject', // (requirido) o nome do script
    $l10n_data // (requirido) dados a serem passados, que podem ser passados por função __()
);
?>

Depois de registrar, enfileirar e localizar seu script, você pode passar variáveis localizáveis no script utilizando o nome do objeto e a string correta, como alert(nameOfTheObject.prevItem);

Conclusão

Há uma razão para o WordPress ser o maior sistema de gerenciamento de conteúdo em todo o mundo: O seu poder vem de sua flexibilidade. E este tutorial mostra (mais uma vez) o quão flexível é.

Este tutorial cobre muito bem o que o WordPress oferece sobre o uso do JavaScript para nossos projetos. Você tem alguma mais dicas e técnicas sobre JavaScript e WordPress? Conte-nos sobre isso!

Este post é uma tradução do post original publicado no WP Tuts por Barış Ünver

Posts Similares

  • Como solicitar imagem destacada como obrigatória?

    Muitos temas de WordPress, sobretudo páginas iniciais e de arquivos/categorias, são altamente dependentes de imagens destacadas para apresentarem uma interface atrativa. Se você tem um tema assim, ou desenvolveu para um cliente que é assim, então você não pode permitir que sua postagem ou a de seu cliente fiquem sem imagem destacada, ou com uma…

  • Prós e contras de se utilizar um Tema Premium (pago) para WordPress

    Muitas pessoas na comunidade open source acreditam que os temas pagos para WordPress fazem uma cobrança desleal e são uma tentativa de pessoas gananciosas para alimentar a formação de suas empresas e negócios em projetos de código aberto. Temos outra visão por aqui, vamos a ela. Temas Premium são contribuições para um projeto de código…

  • Realizando 2 ou mais instalações do WordPress na mesma base de dados

    Vários serviços de hospedagem fornecem apenas uma base de dados e caso você queira uma nova base de dados é necessário pagar um valor adicional na mensalidade. Diante desta situação, quando temos a necessidade de realizar duas ou mais instalações do WordPress no mesmo banco de dados, nos deparamos com a mensagem de erro dizendo…

  • Como acelerar seu blog WordPress usando menos plugins?

    Como acelerar seu blog WordPress usando menos plugins?

    Muitos artigos e blogueiros apresentam matérias mostrando métodos atuais para fazer seu WordPress mais rápido, recomendar soluções eficientes como ter arquivos CSS e JavaScript otimizados e concatenados, como usar CSS sprites e cache. Seguindo essa dica, na verdade este conceito, você pode fazer o seu blog carregar até duas vezes mais rápido (ou mais), e…

  • Como customizar a mensagem Leia Mais, exibida pela tag more

    Como todos nós já sabemos, a tag <!–more–> funciona para quebrarmos a exibição de uma postagem na página inicial… tudo o que estiver acima dela será exibido, e em seu lugar teremos a exibição de uma mensagem padrão, como ‘Leia Mais’ , ‘Read More’, ‘Read This Article’, ou algo neste sentido. Na minha humilde concepção,…

  • Como baixar versões antigas de plugins no repositório oficial?

    Como baixar versões antigas de plugins no repositório oficial?

    Existe uma maneira simples de obter versões anteriores de seus plugins do WordPress, por exemplo, se uma versão atual quebrar sua configuração e você precisar voltar para a versão que funcionava. Note que essa dica é ótima para resolver problemas por um tempo, mas que não é recomendado deixar plugins desatualizados por muito tempo já…

Deixe um comentário

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

7 Comentários

  1. Guga, me tira uma dúvida, por favor.

    Em meu site pessoal tenho meu próprio plugin (My Custom Functions) onde jogo as funções do site. Se eu levar em conta apenas o quesito desempenho (ignorando possíveis duplicações de plugins), qual a melhor opção: Uma função nesse plugin próprio para inserir o .js no footer ou o código escrito diretamente no footer.php?

  2. Legal essa dica.

    Vejo muito código por aí onde as pessoas carregam o JS e o CSS de forma incorreta.

    Também publiquei um artigo falando sobre isso no meu site.

    Abraços.