{"id":28772,"date":"2021-05-31T10:33:00","date_gmt":"2021-05-31T07:33:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28772"},"modified":"2021-10-17T16:34:23","modified_gmt":"2021-10-17T13:34:23","slug":"como-usar-jquery-ajax-en-wordpress","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/es\/como-usar-jquery-ajax-en-wordpress\/","title":{"rendered":"C\u00f3mo usar jQuery Ajax en WordPress"},"content":{"rendered":"<p>\u00bfQuieres implementar jQuery Ajax en WordPress? Los principiantes de WordPress siempre encuentran dificultades al usar Ajax con WordPress. En este art\u00edculo, estudiamos c\u00f3mo usar Ajax en WordPress tomando un ejemplo en vivo.<\/p>\n<h3>\u00bfPor qu\u00e9 necesita jQuery Ajax en el sitio web?<\/h3>\n<p>Ajax (JavaScript y XML as\u00edncronos) permite que una p\u00e1gina web se actualice de forma asincr\u00f3nica. Significa que los datos pueden enviarse y recuperarse de un servidor de forma asincr\u00f3nica sin interferir con la visualizaci\u00f3n y el comportamiento de la p\u00e1gina existente. Con Ajax, puede cambiar partes peque\u00f1as o grandes de una p\u00e1gina web sin actualizar toda la p\u00e1gina. Ayuda a mejorar la experiencia del usuario y al mismo tiempo ahorra una carga adicional en el servidor.<\/p>\n<p>Ajax se vuelve extremadamente popular en el desarrollo web. La mayor\u00eda de los sitios web prefieren usar Ajax para cargar el contenido de forma din\u00e1mica. En el desarrollo web para algunas tareas, debe tener que usar Ajax sin ninguna segunda opci\u00f3n.<\/p>\n<p>Dicho esto, veamos c\u00f3mo usar jQuery Ajax en WordPress.<\/p>\n<h3>Empezando<\/h3>\n<p>Implementar Ajax en WordPress es f\u00e1cil y sencillo. Veremos un ejemplo pr\u00e1ctico de ello. Como ejemplo, tomemos un flujo de men\u00fas desplegables de pa\u00edses y estados. Cuando el usuario selecciona un pa\u00eds del men\u00fa desplegable, todos los estados asignados al pa\u00eds seleccionado deben completarse en el men\u00fa desplegable de estado. Este comportamiento debe ser realizado por Ajax.<\/p>\n<p>Para lograrlo, necesitar\u00e1 2 tablas: wp_countries y wp_states. En estas tablas, debe mantener la relaci\u00f3n de uno a muchos entre el pa\u00eds y los estados. Consulte las capturas de pantalla a continuaci\u00f3n.<\/p>\n<p><strong>Tabla 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=\"C\u00f3mo usar jQuery Ajax en WordPress\" ><\/a><\/p>\n<p><strong>Tabla 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=\"C\u00f3mo usar jQuery Ajax en WordPress\" ><\/a><\/p>\n<p>Una vez que est\u00e9 listo con los datos, cree el men\u00fa desplegable de pa\u00edses obteniendo los datos de la tabla de pa\u00edses de la siguiente manera.<\/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>Hemos agregado la clase &#8216;pa\u00edses&#8217; a la etiqueta de selecci\u00f3n que se usar\u00e1 en el c\u00f3digo jQuery para obtener la identificaci\u00f3n de un pa\u00eds. Tambi\u00e9n agregu\u00e9 un div vac\u00edo con la clase &#8216;load-states&#8217; al que se agregar\u00e1 el men\u00fa desplegable de estado despu\u00e9s de recibir una respuesta de la llamada Ajax.<\/p>\n<h3>jQuery Ajax en WordPress<\/h3>\n<p>A continuaci\u00f3n, necesitamos escribir un c\u00f3digo jQuery que d\u00e9 una llamada Ajax al servidor y maneje la respuesta. Para escribir una llamada Ajax, debe incluir el archivo JS. Crea un <code>custom.js<\/code>archivo dentro del <code>js<\/code>directorio de tu tema activo. Agregue esto <code>custom.js<\/code>en el entorno de WordPress usando el siguiente c\u00f3digo que va 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>Ahora, escribamos un c\u00f3digo jQuery que genere una llamada Ajax y agreguemos el men\u00fa desplegable de estado a la 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>Aqu\u00ed, declar\u00e9 una <code>data<\/code>variable que contiene una <code>action<\/code>clave. El valor de la cadena para la <code>action<\/code>clave debe estar orientado a la tarea. Estamos obteniendo estados, as\u00ed que mantengo su nombre como get_states_by_ajax. Otros elementos de la <code>data<\/code>variable son los detalles que se deben enviar a las solicitudes de Ajax. Nuestro objetivo es obtener un estado basado en el pa\u00eds, por lo que paso la identificaci\u00f3n del pa\u00eds con la clave como <code>country<\/code>.<\/p>\n<p>Ahora es el momento de ejecutar llamadas Ajax en forma de WordPress. Agregue las siguientes 2 declaraciones en el <code>functions.php<\/code>archivo de su tema activo .<\/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; es un prefijo fijo al usar Ajax en WordPress. Luego, agregue el valor de la acci\u00f3n. En nuestro caso es get_states_by_ajax. Entonces, el primer par\u00e1metro se convirti\u00f3 en wp_ajax_get_states_by_ajax. El segundo par\u00e1metro es una funci\u00f3n de devoluci\u00f3n de llamada en la que tenemos que escribir nuestro c\u00f3digo real del lado del servidor. Se debe usar &#8216;wp_ajax_nopriv&#8217; cuando se realizan operaciones para la interfaz.<\/p>\n<p>En el <code>get_states_by_ajax_callback<\/code>m\u00e9todo, escriba el c\u00f3digo que devolver\u00e1 el men\u00fa desplegable de estado. Puede definir este m\u00e9todo en el <code>functions.php<\/code>archivo.<\/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>La respuesta incorporada en el c\u00f3digo lo enviar\u00e1 de vuelta a jQuery. Luego agregamos esta respuesta usando jQuery al contenedor div que tiene la clase &#8216;load-state&#8217;.<\/p>\n<p>Vaya a su p\u00e1gina y elija el pa\u00eds. Deber\u00eda ver que aparece el men\u00fa desplegable de estado para el pa\u00eds seleccionado.<\/p>\n<p>Espero que comprenda c\u00f3mo usar Ajax en el sitio web de WordPress. Comparta sus pensamientos y sugerencias en la secci\u00f3n de comentarios a continuaci\u00f3n.<\/p>\n<h4>Art\u00edculos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-cargar-publicaciones-de-wordpress-con-ajax\/\" title=\"C\u00f3mo cargar una publicaci\u00f3n de WordPress con AJAX\" >C\u00f3mo cargar una publicaci\u00f3n de WordPress con AJAX<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-integrar-la-carga-de-archivos-ajax-en-wordpress\/\" title=\"C\u00f3mo integrar la carga de archivos Ajax en WordPress\" >C\u00f3mo integrar la carga de archivos Ajax en WordPress<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-usar-jquery-autocomplete-con-ajax\/\" title=\"C\u00f3mo usar jQuery Autocomplete con Ajax\" >C\u00f3mo usar jQuery Autocomplete con Ajax<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfQuieres saber c\u00f3mo usar jQuery Ajax en WordPress? En este tutorial. hemos tomado un ejemplo del mundo real y le mostramos c\u00f3mo usar Ajax en<\/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":[203,495,606],"tags":[849],"class_list":["post-28772","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-elementor-2","category-laravel","category-uncategorized-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/28772","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/comments?post=28772"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/28772\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media\/21665"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media?parent=28772"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/categories?post=28772"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/tags?post=28772"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}