Estoy tratando de integrar ajax en wordpress usando las directrices de wp codex. En el PHP agregué:
wp_enqueue_script ( 'my_ajax', ADMIN_URL . 'js/ajax.js','jquery','1.0.0' );
wp_localize_script( 'my_ajax', 'MyAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
El código ajax es:
jQuery.ajax({url: MyAjax.ajaxurl, type: "POST",data: {action: 'myaction',postID : MyAjax.postID}, success: function(response) {
alert('Got this from the server: ' + response);
}});
y la función de PHP que debe ser llamada por ajax es:
function ajax_function() {
...do something...
}
add_action('wp_ajax_myaction', 'ajax_function');
add_action('wp_ajax_admin_myaction', 'ajax_function');
La llamada ajax es exitosa (la "alerta" funciona), sin embargo, la función php "ajax_function" nunca se llama. Después de hacer un poco de depuración, me di cuenta de que aunque la acción llamada add_action ('wp_ajax_ establece un nuevo elemento en la matriz global $ wp_filter, cuando la correspondiente do_action se ejecuta dentro de admin-ajax.php, la matriz $ wp_filter ya no contiene ese elemento.
Por lo tanto, la función "ajax_function" se ignora. ¿Alguna idea de por qué no se llama a la función?