Usando AJAX com PHP em seu site WordPress com seu próprio plugin

Publicados: 2021-07-23

Ajax com PHP

Neste artigo, discutimos sobre AJAX com PHP para o seu site WordPress.

AJAX é uma técnica de desenvolvimento web que ajuda os usuários a desenvolver aplicativos interativos no site. Ele fornece aos usuários uma experiência na Web mais rápida e suave. Ele permite que os usuários façam alterações ou atualizem o conteúdo da página da Web sem recarregar ou atualizar as páginas. É preciso conhecer várias linguagens de programação para trabalhar com AJAX.

O que é AJAX?

AJAX significa 'JavaScript assíncrono e XML'. Como mencionado anteriormente, ele é usado para criar aplicativos da Web que são divertidos, em constante mudança e interativos.

Alguns dos exemplos populares de aplicativos da web desenvolvidos com a ajuda de AJAX e tecnologias relacionadas são o Google Maps, o recurso de preenchimento automático na pesquisa do Google, comentários e curtidas em várias postagens de mídia social e muitos outros.

Noções básicas de AJAX

O Ajax com a ajuda de várias linguagens de programação, como JavaScript, HTML, CSS e XML, desenvolve aplicativos e sites da Web mais rápidos e aprimorados. Além dessas linguagens de programação, para o desenvolvimento de aplicações web, AJAX com PHP e outras linguagens do lado do servidor também estão sendo utilizadas.

Ele usa JavaScript para a exibição de conteúdo, enquanto o CSS ajuda na apresentação e no Document Object Model. Ele ainda usa XHTML para conteúdo.

Em aplicativos ou páginas da Web tradicionais, as informações são trocadas com o servidor de forma síncrona. Por outro lado, nas aplicações web, que foram projetadas para usar AJAX, quando ocorre um evento como clicar em um botão ou preencher um formulário, o JavaScript cria uma solicitação XMLHTTP e a envia ao servidor em formato XML.

O servidor processa a solicitação cria uma resposta do lado do servidor e a envia de volta ao navegador. O JavaScript processa a resposta e o conteúdo na tela de exibição atual é atualizado. Como não é necessário recarregar ou atualizar as páginas, os usuários não estarão cientes da transferência de qualquer informação para o servidor.

Habilidades necessárias para trabalhar com AJAX no WordPress

Como se entende a partir da discussão acima, os usuários precisam das seguintes habilidades para utilizar o AJAX corretamente.
• Conhecimento de linguagens de programação como JavaScript, HTML e CSS
• Proficiência em linguagens do lado do servidor, como PHP e outras
• Noções básicas de XML ou JSON

Vantagens do AJAX

As várias vantagens do AJAX são discutidas abaixo
• Ele quase suporta todos os navegadores usados ​​nos tempos atuais
• Envolve um tempo de resposta mais rápido, o que significa uma melhor experiência do usuário em termos de velocidade e desempenho
• Bibliotecas JavaScript de código aberto, como Prototype, jQuery, etc, estão disponíveis para uso
• Reduz o tempo entre o cliente e o servidor, pois o tempo de ambos os usuários, assim como o do servidor, é economizado
• Como o servidor não precisa processar cargas de dados, ele ajuda a reduzir o uso de largura de banda e otimizar a operação da rede.
• Como a solicitação XMLHTTP é usada para recuperar dados, os usuários podem realizar várias tarefas simultaneamente.

AJAX no WordPress

O AJAX é usado no back-end do WordPress, como resultado, sempre que qualquer alteração for feita na postagem ou nas categorias, ou sempre que o administrador estiver moderando comentários, as atualizações serão feitas instantaneamente. AJAX é usado principalmente com JQuery no WordPress. O processo no qual o WordPress usa AJAX é o seguinte
• Quando uma solicitação é feita, ela passa pelo arquivo 'admin-ajax.php' localizado na pasta 'wp-admin'.
• Essas solicitações são necessárias para fornecer pelo menos um dado, também chamado de 'ação' geralmente, usando o método 'get' ou 'post'.
• Esta ação solicita ao código no arquivo 'admin-ajax.php' para criar dois ganchos, a saber, 'wp_ajax_my_action' e 'wp_ajax_nopriv_my_action'. O 'my_action' nesses ganchos indica o valor da variável 'action' do método 'get' ou 'post'.
• Enquanto o primeiro gancho é destinado às ações realizadas pelos usuários logados, o segundo gancho é destinado exclusivamente aos usuários desconectados.
• As funções enganchadas devem ser planejadas para a degradação graciosa, o que garante que mesmo se o JavaScript estiver desabilitado nos navegadores, os códigos ainda funcionarão.

Crie um plugin WordPress AJAX

Nesta seção, vamos pegar o exemplo de um plugin WordPress AJAX básico chamado 'Post Likes Counter'. Este plugin inclui os seguintes recursos:
• É atualizado instantaneamente no frontend
• Os usuários logados têm permissão para curtir as postagens.
• Se os usuários desconectados tentarem curtir a postagem, uma mensagem de erro aparecerá na tela
• Este plugin ajuda a manter o registro total do número de 'curtidas' e as exibe
Em primeiro lugar, é necessário criar e ativar um plugin WordPress vazio. Para criar um plugin, são necessários os seguintes passos.

Etapa 1 : selecione um nome exclusivo para o plug-in. Pode-se verificar os repositórios de plugins para garantir que o nome proposto do plugin já não esteja em uso. Normalmente, os desenvolvedores de plug-ins selecionam o nome de um plug-in com base na função que ele deve executar.

Etapa 2 : Na próxima etapa, é necessário criar um arquivo PHP usando o nome do plug-in selecionado. Como os usuários que irão instalar este plugin, será necessário colocar o arquivo PHP no diretório de plugins do WordPress 'wp-content/plugins-' para sua instalação, os plugins não podem compartilhar o mesmo nome para arquivos PHP.

Portanto, o nome do arquivo do plug-in também deve ser exclusivo para evitar conflito com outro plug-in no repositório. Pode-se usar seu nome ou o nome de sua empresa no prefixo para criar um nome exclusivo para o arquivo PHP.

Passo 3 : Deve-se notar que o plugin WordPress deve conter pelo menos um arquivo PHP junto com JavaScript, CSS, idiomas e arquivos de imagem. Se vários arquivos estiverem presentes, selecione um nome exclusivo para o diretório e um nome preferencial para o arquivo PHP principal.

Coloque todos os arquivos de plug-in no diretório criado e solicite aos usuários do plug-in que carreguem esse diretório inteiro para o diretório 'wp-content/plugins/'.

A instalação do WordPress pode ser configurada para alterar o diretório padrão do plugin 'wp-content/plugins/'. Portanto, deve-se usar plugin_dir_path() e plugin_url() como caminho absoluto e URLs em seu código PHP.

Modelo de postagem do tema

Depois de criar o plugin, é preciso encontrar o modelo de postagem 'single.php' do seu tema. Ele pode ser encontrado no diretório raiz do tema ativo. É usado quando um único post é consultado; onde se deseja colocar o plugin 'Post Like Counter'. O arquivo deve ser mantido aberto para edição.

Prepare o Post Template pronto para a chamada AJAX

É necessário criar um link para que os usuários possam curtir as postagens. Se os usuários habilitaram o JavaScript, eles podem usar os arquivos JavaScript (que serão criados posteriormente) ou então podem seguir o link diretamente. Para isso, insira o seguinte código no arquivo 'single.php'. Este código também pode ser adicionado a qualquer uma das partes do modelo que o arquivo 'single.php' contém.

// O valor da meta-chave 'curtidas' armazenará a contagem total de curtidas para uma postagem específica, mostrará 0 se for uma string vazia
ID, "curtidas", true);
	$curtidas = ($curtidas == "") ? 0 : $ curtidas;
?>

Esta postagem tem <span id='like_counter'></span> curtidas<br>

// Vinculando ao arquivo admin-ajax.php. Cheque Nonce incluído para segurança extra. Observe a classe "user_like" para clientes habilitados para JS.
ID.'&amp;nonce='.$nonce);
	echo '<a class="user_like" data-nonce="' . $nonce . '">ID . '" href="'. $link. '"&gt;Curtir esta postagem</a>';
?&gt;

Endereçando a chamada Ajax sem JavaScript

Ao clicar no link criado no passo anterior, será encaminhado para o script 'admin-ajax.php'; no entanto, eles não encontrarão nenhum resultado útil, pois a função não foi criada para executar a ação. Para criar a função no arquivo do plugin e adicioná-la aos hooks criados pelo WordPress, insira o código a seguir.


&lt;?php // usado aqui apenas para habilitar o realce de sintaxe. Deixe isso de fora se já estiver incluído em seu arquivo de plug-in.

// define as ações para os dois ganchos criados, primeiro para usuários logados e o próximo para usuários desconectados
add_action(&quot;wp_ajax_my_user_like&quot;, &quot;my_user_like&quot;);
add_action(&quot;wp_ajax_nopriv_my_user_like&quot;, &quot;please_login&quot;);

// define a função a ser acionada para usuários logados
function my_user_like() {
   
   // nonce verifica se há uma camada extra de segurança, a função será encerrada se falhar
   if ( !wp_verify_nonce( $_REQUEST[&#039;nonce&#039;], &quot;my_user_like_nonce&quot;)) {
      exit(&quot;Woof Woof&quot;);
   }   
   
   // busca like_count para um post, define como 0 se estiver vazio, incrementa em 1 quando um clique é registrado 
   $like_count = get_post_meta($_REQUEST[&quot;post_id&quot;], &quot;curtidas&quot;, true);
   $like_count = ($like_count == ') ? 0 : $like_count;
   $new_like_count = $like_count + 1;
   
   // Atualiza o valor de &#039;curtidas&#039; meta-chave para o post especificado, cria novos metadados para o post se não existir nenhum
   $like = update_post_meta($_REQUEST[&quot;post_id&quot;], &quot;curtidas&quot;, $new_like_count);
   
   // Se a ação acima falhar, o tipo de resultado é definido como &#039;erro&#039; e like_count definido para o valor antigo, se for bem-sucedido, atualizado para new_like_count  
   if($like === false) {
      $result[&#039;tipo&#039;] = &quot;erro&quot;;
      $resultado[&#039;like_count&#039;] = $like_count;
   }
   senão {
      $result[&#039;tipo&#039;] = &quot;sucesso&quot;;
      $resultado[&#039;like_count&#039;] = $new_like_count;
   }
   
   // Verifica se a ação foi acionada via chamada Ajax. Se sim, o código JS será acionado, caso contrário o usuário será redirecionado para a página de postagem
   if(!empty($_SERVER[&#039;HTTP_X_REQUESTED_WITH&#039;]) &amp;&amp; strtolower($_SERVER[&#039;HTTP_X_REQUESTED_WITH&#039;]) == &#039;xmlhttprequest&#039;) {
      $resultado = json_encode($resultado);
      echo $resultado;
   }
   senão {
      header(&quot;Local: &quot;.$_SERVER[&quot;HTTP_REFERER&quot;]);
   }

   // não se esqueça de terminar seus scripts com uma função die() - muito importante
   morrer();
}

// define a função a ser acionada para usuários desconectados
function please_login() {
   echo &quot;Você deve fazer login para curtir&quot;;
   morrer();
}

Se tudo der certo, quando um usuário logado clicar no link 'curtir esta postagem', o número de curtidas será atualizado automaticamente. Por outro lado, se o JavaScript estiver desabilitado, a página será atualizada exibindo as contagens atualizadas de 'curtidas'.

Adicionando suporte para JavaScript

Adicionar suporte para JavaScript pode facilitar as coisas. Para usar AJAX com PHP no WordPress, é necessário enfileirar a biblioteca jQuery junto com o arquivo JavaScript personalizado do plug-in. Para isso, escreva o seguinte código no plugin.

 admin_url( 'admin-ajax.php' )));        
   
   // enfileira a biblioteca jQuery e o script que você registrou acima
   wp_enqueue_script('jquery');
   wp_enqueue_script( 'liker_script' );
}

Em seguida, é necessário criar o arquivo Javascript 'liker_script.js', que seria posteriormente carregado na pasta raiz do plug-in. O código a seguir é usado para criar o arquivo 'liker_script.js'.

jQuery(document).ready( function() {
   jQuery(".user_like").click( function(e) {
      e.preventDefault(); 
      post_id = jQuery(this).attr("data-post_id");
      nonce = jQuery(this).attr("data-nonce");
      jQuery.ajax({
         digite: "postagem",
         dataType: "json",
         url: myAjax.ajaxurl,
         data : {action: "my_user_like", post_id : post_id, nonce: nonce},
         sucesso: function(resposta) {
            if(response.type == "sucesso") {
               jQuery("#like_counter").html(response.like_count);
            }
            senão {
               alert("Sua curtida não pode ser adicionada");
            }
         }
      });
   });
});

Como implementar AJAX em temas do WordPress

As etapas a seguir ajudarão na implementação do AJAX com PHP nos temas do WordPress. Por exemplo, vamos supor que nosso trabalho seja exibir as categorias em um menu suspenso e ao clicar em 'Categoria Pai', as subcategorias aparecerão em outra caixa suspensa. Esta tarefa será realizada com a ajuda dos seguintes passos

Etapa 1 : Selecione 'categorias' no lado esquerdo do painel e insira o nome das categorias na caixa que aparece no lado direito e insira o slug de categoria abaixo. Se a categoria pai estiver sendo criada, selecione 'nenhuma', ou se as subcategorias estiverem sendo criadas, selecione a categoria pai nas opções.

Etapa 2 : Nesta etapa, seria criado um modelo WordPress onde a funcionalidade AJAX será implementada. Abra um novo arquivo PHP e salve-o. Insira o seguinte código na página criada.


No código acima, 'Nome do modelo: Implementar Ajax', é o nome do modelo do WordPress e as funções 'get_header()' e 'get_footer()' são usadas para exibir o conteúdo do cabeçalho e rodapé da página.

Em primeiro lugar, é necessário incluir o arquivo da biblioteca jQuery na página, o que ajudará a adicionar o material AJAX. AJAX com PHP pode-se usar qualquer biblioteca JavaScript ou pode chamar AJAX com JavaScript bruto. No exemplo a seguir, a biblioteca JavaScript jQuery é usada para implementar AJAX.

Etapa 3 : Adicione o arquivo jQuery no modelo e chame a função 'wp_dropdown_categories' para que as categorias pai no menu suspenso possam ser recuperadas.





#content{largura:auto; altura:400px; margem:50px;}

<div>


</div>
&lt;?php

Passo 4 : Insira o código jQuery para obter o ID da categoria principal que está sendo selecionada. Envie-o para o arquivo 'functions.php' para obter as subcategorias sob o ID da categoria pai selecionada. Os resultados podem ser enviados de volta para a página sem atualizá-la.

$(função(){
			$('#main_cat').change(function(){
					var $mainCat=$('#main_cat').val();

					//chama ajax
					 $("#sub_cat").empty();
						$.ajax({
							url:"/wp-admin/admin-ajax.php",
							digite: 'POST',
														data:'action=my_special_action&amp;main_catid=' + $mainCat,

							 sucesso:função(resultados)
								 {
								// alerta(resultados);
				$("#sub_cat").removeAttr("desativado");
				$("#sub_cat").append(resultados);
										}
								   });
						  }
									);
});

Neste código acima, o código é adicionado no evento de alteração da lista suspensa de categorias principais com o ID '#main_cat'.

var $mainCat=$('#main_cat').val();

A função .val() ajuda a obter o valor da opção selecionada do menu suspenso e armazenar na variável '$mainCat'.

$("#sub_cat").empty();

A lista suspensa da subcategoria '#sub_cat' deve ser desocupada, se contiver algum valor anterior, antes de chamar o AJAX.

A seguinte linha jQuery ajudará na chamada de funções AJAX jQuery. Verifique os parâmetros da função AJAX fornecidos na seção abaixo.

url:"bloginfo('wpurl'); ?&gt;/wp-admin/admin-ajax.php",
digite: 'POST',

Para fazer o AJAX funcionar no WordPress, o parâmetro 'URL' é usado. Portanto, as solicitações serão enviadas para o arquivo 'admin-ajax.php'. Em seguida, os ganchos no arquivo 'functions.php' serão chamados para obter os dados postados que foram enviados para a URL: '/wp-admin/admin-ajax.php'

Para enviar os valores junto com a solicitação, é utilizado o parâmetro 'data'. Neste exemplo, dois argumentos com o parâmetro data são usados ​​– action e main_catid.

Passo 5 : No arquivo 'functions.php', o código a seguir é usado para ligar uma ação.

add_action('wp_ajax_my_special_action', 'my_action_callback');

Nesta ação acima, o gancho tem dois argumentos. No primeiro argumento 'wp_ajax_my_special_action' , 'wp_ajax_ ' é o valor que é enviado junto com o parâmetro de dados 'action'. No segundo argumento 'my_action_callback', os dados serão processados ​​e os resultados serão enviados de volta.

Este gancho de ação acima é para usuários logados. Para os usuários desconectados, pode-se conectar a seguinte ação

add_action('wp_ajax_nopriv_my_special_action', 'my_action_callback');

O código final após adicionar ganchos para usuários e função de retorno de chamada é o seguinte

function implement_ajax() {
if(isset($_POST['main_catid']))
			{
			$categories= get_categories('child_of='.$_POST['main_catid'].'&amp;hide_empty=0');
			  foreach ($categorias como $cat) {
				$option .= 'term_id.'"&gt;';
				$option .= $cat-&gt;cat_name;
				$option .= ' ('.$cat-&gt;category_count.')';
				$opção .= '';
			  }

			  echo 'Scegli...'.$option;
			morrer();
			} // fim se
}
add_action('wp_ajax_my_special_ajax_call', 'implement_ajax');
add_action('wp_ajax_nopriv_my_special_ajax_call', 'implement_ajax');//para usuários que não estão logados.

Etapa 6 : Nesta etapa, crie uma nova página no painel e atribua o modelo a ela. Depois que a página estiver sendo carregada no navegador, a primeira lista suspensa com categorias pai será carregada nela.

Como a segunda lista suspensa está vazia, selecione a opção na primeira lista suspensa para verificar como funciona.

Assim, AJAX com PHP pode ser usado no site WordPress com a ajuda de um plugin recém-criado.