{"id":28063,"date":"2021-05-31T10:43:00","date_gmt":"2021-05-31T07:43:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28063"},"modified":"2021-10-18T04:05:55","modified_gmt":"2021-10-18T01:05:55","slug":"como-usar-jquery-ajax-no-wordpress","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pt-pt\/como-usar-jquery-ajax-no-wordpress\/","title":{"rendered":"Como usar jQuery Ajax no WordPress"},"content":{"rendered":"<p>Voc\u00ea quer implementar jQuery Ajax no WordPress? Iniciantes em WordPress sempre encontram dificuldades em usar Ajax com WordPress. Neste artigo, estudamos como usar Ajax no WordPress tomando um exemplo ao vivo.<\/p>\n<h3>Por que precisa de jQuery Ajax no site?<\/h3>\n<p>Ajax (Asynchronous JavaScript And XML) permite que uma p\u00e1gina da web seja atualizada de forma ass\u00edncrona. Isso significa que os dados podem ser enviados e recuperados de um servidor de maneira ass\u00edncrona, sem interferir na exibi\u00e7\u00e3o e no comportamento da p\u00e1gina existente. Usando Ajax, voc\u00ea pode alterar partes pequenas ou grandes de uma p\u00e1gina da web sem atualizar a p\u00e1gina inteira. Isso ajuda a melhorar a experi\u00eancia do usu\u00e1rio e ao mesmo tempo economiza uma carga extra no servidor.<\/p>\n<p>Ajax se tornou extremamente popular no desenvolvimento web. A maioria dos sites prefere usar Ajax para carregar o conte\u00fado dinamicamente. No desenvolvimento da web para algumas tarefas, voc\u00ea deve usar Ajax sem qualquer segunda op\u00e7\u00e3o.<\/p>\n<p>Dito isso, vamos ver como usar jQuery Ajax no WordPress.<\/p>\n<h3>Come\u00e7ando<\/h3>\n<p>Implementar Ajax no WordPress \u00e9 f\u00e1cil e direto. Veremos um exemplo pr\u00e1tico disso. Como exemplo, vamos pegar um fluxo de listas suspensas de pa\u00eds e estado. Quando o usu\u00e1rio seleciona um pa\u00eds na lista suspensa, todos os estados atribu\u00eddos ao pa\u00eds selecionado devem ser preenchidos na lista suspensa de estados. Este comportamento deve ser feito pelo Ajax.<\/p>\n<p>Para alcan\u00e7\u00e1-lo, voc\u00ea precisar\u00e1 de 2 tabelas &#8211; wp_countries e wp_states. Nessas tabelas, voc\u00ea deve manter a rela\u00e7\u00e3o de um para muitos entre o pa\u00eds e os estados. Consulte as imagens abaixo.<\/p>\n<p><strong>Tabela wp_countries<\/strong><\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20392-6081ead491f5f.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20392-6081ead491f5f.png\" alt=\"Como usar jQuery Ajax no WordPress\" ><\/a><\/p>\n<p><strong>Tabela wp_states<\/strong><\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20392-6081ead547fd7.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20392-6081ead547fd7.png\" alt=\"Como usar jQuery Ajax no WordPress\" ><\/a><\/p>\n<p>Quando estiver pronto com os dados, crie a lista suspensa de pa\u00edses obtendo os dados da tabela de pa\u00edses da seguinte forma.<\/p>\n<pre><code>&lt;?php\nglobal $wpdb;\n$aCountries = $wpdb-&gt;get_results( \"SELECT id, country FROM \".$wpdb-&gt;prefix.\"countries\" );\n\u00a0\n&lt;form method=\"post\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;select class=\"countries\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;option value=\"\"&gt;--&lt;?php _e('SELECT COUNTRY'); ?&gt;--&lt;\/option&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php foreach ($aCountries as $country) { ?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;option value=\"&lt;?php echo $country-&gt;id; ?&gt;\"&gt;&lt;?php echo $country-&gt;country; ?&gt;&lt;\/option&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php } ?&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/select&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;div class=\"load-state\"&gt;&lt;\/div&gt;\n&lt;\/form&gt;\n?&gt;<\/code><\/pre>\n<p>Adicionamos a classe &#8216;pa\u00edses&#8217; \u00e0 tag de sele\u00e7\u00e3o que ser\u00e1 usada no c\u00f3digo jQuery para obter o id de um pa\u00eds. Eu tamb\u00e9m adicionei um div vazio com a classe &#8216;load-states&#8217; ao qual a lista suspensa de estado ser\u00e1 anexada ap\u00f3s receber uma resposta da chamada Ajax.<\/p>\n<h3>jQuery Ajax no WordPress<\/h3>\n<p>Em seguida, precisamos escrever um c\u00f3digo jQuery que forne\u00e7a uma chamada Ajax para o servidor e manipule a resposta. Para escrever uma chamada Ajax, voc\u00ea deve incluir o arquivo JS. Crie um <code>custom.js<\/code>arquivo dentro do <code>js<\/code>diret\u00f3rio do seu tema ativo. Adicione isso <code>custom.js<\/code>no ambiente WordPress usando o c\u00f3digo abaixo que vai dentro <code>functions.php<\/code>.<\/p>\n<pre><code>function blog_scripts() {\n\u00a0\u00a0\u00a0\u00a0\/\/ Register the script\n\u00a0\u00a0\u00a0\u00a0wp_register_script( 'custom-script', get_stylesheet_directory_uri(). '\/js\/custom.js', array('jquery'), false, true );\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\/\/ Localize the script with new data\n\u00a0\u00a0\u00a0\u00a0$script_data_array = array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'ajaxurl' =&gt; admin_url( 'admin-ajax.php' ),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'security' =&gt; wp_create_nonce( 'load_states' ),\n\u00a0\u00a0\u00a0\u00a0);\n\u00a0\u00a0\u00a0\u00a0wp_localize_script( 'custom-script', 'blog', $script_data_array );\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\/\/ Enqueued script with localized data.\n\u00a0\u00a0\u00a0\u00a0wp_enqueue_script( 'custom-script' );\n}\nadd_action( 'wp_enqueue_scripts', 'blog_scripts' );<\/code><\/pre>\n<p>Agora, vamos escrever um c\u00f3digo jQuery que fornece uma chamada Ajax e anexar o menu suspenso de estado \u00e0 p\u00e1gina.<\/p>\n<p><strong>custom.js<\/strong><\/p>\n<pre><code>jQuery(function($) {\n\u00a0\u00a0\u00a0\u00a0$('body').on('change', '.countries', function() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var countryid = $(this).val();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(countryid != '') {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var data = {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'action': 'get_states_by_ajax',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'country': countryid,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'security': blog.security\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$.post(blog.ajaxurl, data, function(response) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('.load-state').html(response);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0});\n});<\/code><\/pre>\n<p>Aqui, declarei uma <code>data<\/code>vari\u00e1vel que cont\u00e9m uma <code>action<\/code>chave. O valor da string para a <code>action<\/code>chave deve ser orientado \u00e0 tarefa. Estamos buscando estados, ent\u00e3o mantenho seu nome como get_states_by_ajax. Outros elementos da <code>data<\/code>vari\u00e1vel s\u00e3o os detalhes que devem ser enviados \u00e0s solicita\u00e7\u00f5es Ajax. Nosso objetivo \u00e9 buscar um estado com base no pa\u00eds, ent\u00e3o estou passando o id do pa\u00eds com a chave como <code>country<\/code>.<\/p>\n<p>Agora \u00e9 hora de executar chamadas Ajax no modo WordPress. Adicione as 2 declara\u00e7\u00f5es abaixo no <code>functions.php<\/code>arquivo do seu tema ativo .<\/p>\n<pre><code>add_action('wp_ajax_get_states_by_ajax', 'get_states_by_ajax_callback');\nadd_action('wp_ajax_nopriv_get_states_by_ajax', 'get_states_by_ajax_callback');<\/code><\/pre>\n<p>&#8216;wp_ajax&#8217; \u00e9 um prefixo fixo ao usar Ajax no WordPress. Em seguida, anexe o valor da a\u00e7\u00e3o a ele. Em nosso caso, \u00e9 get_states_by_ajax. Portanto, o primeiro par\u00e2metro tornou-se wp_ajax_get_states_by_ajax. O segundo par\u00e2metro \u00e9 uma fun\u00e7\u00e3o de retorno de chamada na qual temos que escrever nosso c\u00f3digo real do lado do servidor. &#8216;wp_ajax_nopriv&#8217; deve ser usado quando voc\u00ea est\u00e1 fazendo opera\u00e7\u00f5es para o front end.<\/p>\n<p>No <code>get_states_by_ajax_callback<\/code>m\u00e9todo, escreva o c\u00f3digo que retornar\u00e1 o menu suspenso de estado. Voc\u00ea pode definir este m\u00e9todo no <code>functions.php<\/code>arquivo.<\/p>\n<pre><code>function get_states_by_ajax_callback() {\n\u00a0\u00a0\u00a0\u00a0check_ajax_referer('load_states', 'security');\n\u00a0\u00a0\u00a0\u00a0$country = $_POST['country'];\n\u00a0\u00a0\u00a0\u00a0global $wpdb;\n\u00a0\u00a0\u00a0\u00a0$aStates = $wpdb-&gt;get_results( $wpdb-&gt;prepare( \"SELECT id, state_name FROM \".$wpdb-&gt;prefix.\"states WHERE cid = %d\", $country) );\n\u00a0\u00a0\u00a0\u00a0if ($aStates) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;select&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0foreach ($aStates as $state) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;option value=\"&lt;?php echo $state-&gt;id; ?&gt;\"&gt;&lt;?php echo $state-&gt;state_name; ?&gt;&lt;\/option&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/select&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0wp_die();\n}<\/code><\/pre>\n<p>A resposta embutida no c\u00f3digo o enviar\u00e1 de volta ao jQuery. Em seguida, anexamos essa resposta usando jQuery ao cont\u00eainer div que possui a classe &#8216;load-state&#8217;.<\/p>\n<p>V\u00e1 at\u00e9 sua p\u00e1gina e escolha o pa\u00eds. Voc\u00ea deve ver a lista suspensa de estado para o pa\u00eds selecionado.<\/p>\n<p>Espero que voc\u00ea entenda como usar Ajax no site WordPress. Por favor, compartilhe seus pensamentos e sugest\u00f5es na se\u00e7\u00e3o de coment\u00e1rios abaixo.<\/p>\n<h4>Artigos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-carregar-posts-wordpress-com-ajax\/\" title=\"Como carregar uma postagem do WordPress com AJAX\" >Como carregar uma postagem do WordPress com AJAX<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-integrar-o-upload-de-arquivos-ajax-no-wordpress\/\" title=\"Como integrar o upload de arquivos Ajax no WordPress\" >Como integrar o upload de arquivos Ajax no WordPress<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-usar-o-jquery-autocomplete-com-ajax\/\" title=\"Como usar o jQuery Autocomplete com Ajax\" >Como usar o jQuery Autocomplete com Ajax<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voc\u00ea quer saber como usar o jQuery Ajax no WordPress? Neste tutorial. pegamos um exemplo do mundo real e mostramos como usar Ajax em<\/p>\n","protected":false},"author":1,"featured_media":21665,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[210,502,613],"tags":[848],"class_list":["post-28063","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-elementor-9","category-laravel","category-uncategorized-9","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/28063","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/comments?post=28063"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/28063\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media\/21665"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media?parent=28063"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/categories?post=28063"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/tags?post=28063"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}