JavaScript
O WordPress possui um gerenciador de dependência, que lhe permite controlar os imports do JavaScript. Não use a tag <script> para fazer embeds de scripts, ao invés disso, crie um arquivo separado e o importe.
Registrando e Importando
Os scripts devem ser registrados, isso facilita o trabalho do gerenciador de dependência, pois quando você registra o arquivo, você declara a existência do script para o WordPress.
Vamos registrar e importar um script.
// Usa a função wp_enqueue_scripts para registrar e importar os scripts no Front-End.
add_action( 'wp_enqueue_scripts', 'register_and_enqueue_a_script' );
function register_and_enqueue_a_script() {
// Associa uma ID chamada `my-script` para este script em específico.
// + este arquivo está localizado na raiz do tema,
// + que possui como dependência o o jQuery,
// + Um *timestamp* é adicionado toda vez que o arquivo é modificado, isso previne o cache do arquivo durante o desenvolvimento,
// + ele é posicionado no final da página (footer)
wp_register_script(
'my-script',
get_template_directory_uri().'/js/functions.js',
array( 'jquery' ),
filemtime( get_template_directory().'/js/functions.js',
true
);
// Importamos o script.
wp_enqueue_script( 'my-script' );
}Pro-Tips:
Os scripts devem ser importados apenas quando necessário; Envolvendo a função
wp_enqueue_script()usando condicionais para controle do mesmo.Quando você for importar seus scripts no Painel do Admin, use o hook
admin_enqueue_scripts.Se for adicionar scripts para a tela de login, use o hook
login_enqueue_scripts.
Localização
A localização é um script que lhe permite passar variáveis(dados) do PHP para JavaScript. Isso normalmente é usado para internacionalização de strings (tradução), mas existem muitas outras meneiras de usarmos esta técnica.
De um ponto de vista técnico, localizar um script significa que haverá uma nova tag <script> adicionada logo antes dos scripts registrados, que contém o objeto _global_ JavaScript com o nome que você especificou durante a localização no segundo argumento. Isso significa que, se você adicionar um outro script que possui esse mesmo script como dependência, você poderá usar o mesmo objeto _global_ no novo script sem problemas. O WordPress trabalha muito bem com encadeamento de dependências.
Vamos localizar um script.
No arquivo de javascript, os dados estão disponíveis através do objeto especificado durante o processo de localização.
Remover os importes e registros padrão do WordPress
Você pode remover um registro ou um importe através das funções wp_deregister_script() e wp_dequeue_script().
AJAX
WordPress oferece endpoints no servidor para requisições AJAX, localizado em wp-admin/admin-ajax.php. Vamos configurar um endpoint no servidor para manipulação AJAX.
Em seguida vem o JavaScript:
ajax_url representa o endpoint do admin via AJAX, que é automaticamente definida na página do Admin, mas não no front-end.
Vamos localizar nosso script para incluir a URL do admin:
JavaScript com WP AJAX
Existe várias maneiras de fazermos isto. A maneira mais comum é usar $.ajax(). É claro que existem atalhos disponíveis como $.post() e $.getJSON().
Aqui esta um exemplo padrão.
Perceba que o exemplo acima usa _ajax_nonce para verificar o valor NONCE, o qual você terá de definir sozinho, quando for localizar o script. É só adicionar '_ajax_nonce' => wp_create_nonce( "some_value" ), no objeto array. Você então poderá adicionar um marcador nos seus callbacks do PHP, que se parecem um pouco com isso check_ajax_referer( "some_value" ).
Trabalhando com AJAX e Eventos
Na verdade é muito simples executar uma requisição AJAX por cliques (ou qualquer outro tipo de interação do usuário) em algum elemento. Apenas envolva a sua chamada $.ajax() (ou algum de seu similares). Você pode ainda, adicionar um delay na requisição.
Multiplos callbacks para uma única requisição AJAX
Você pode acabar caindo em uma situação da qual multiplas tarefas acontecem depois de que uma requisição AJAX é finalizada. Felizmente jQuery retorna um objeto, onde você pode anexar todos os seus callbacks.
Encadeamento de Callbacks
Um cenário comum (do qual muitas vezes um callback é necessário e como ele é simples de ser utilizado), é o encadeamento de callbacks quando uma requisição AJAX é finalizada.
Vamos dar uma olhada no problema primeiro:
O callback (A) é executado. O callback (B) não sabe que deve esperar por (A). Você não pode ver o problema na sua instalação local se (A) terminar rapidamente.
A grande questão é, quando nós devemos esperar (A) finalizar, para só então, inicializarmos o processo de (B).
A resposta é que o processo é "adiado" carregando suas "promessas", também conhecido como "futuros".
Veja um exemplo:
Last updated