Me pregunto cuál es el método preferido para tratar las llamadas AJAX. ¿Se debe utilizar el mismo archivo php de complemento para procesar la POST o uno diferente? ¿Cuál es más limpio o más seguro?
fuente
Me pregunto cuál es el método preferido para tratar las llamadas AJAX. ¿Se debe utilizar el mismo archivo php de complemento para procesar la POST o uno diferente? ¿Cuál es más limpio o más seguro?
la forma "más segura y limpia" sería usar admin-ajax.php que viene con wordpress y wp_ajax
hook para llamar a su función de procesamiento desde su archivo de complemento y usar wp-nonce para verificar la integridad de la llamada.
por ejemplo:
su llamada ajax JQuery sería
<script type="text/javascript" >
jQuery(document).ready(function($) {
var data = {
action: 'ACTION_NAME',
Whatever: '1234',
_ajax_nonce: '<?php echo wp_create_nonce( 'my_ajax_nonce' ); ?>'
};
// since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
// If you need it on a public facing page, uncomment the following line:
// var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
jQuery.post(ajaxurl, data, function(response) {
alert('Got this from the server: ' + response);
});
});
</script>
luego en su archivo de complemento agregue
//if you want only logged in users to access this function use this hook
add_action('wp_ajax_ACTION_NAME', 'my_AJAX_processing_function');
//if you want none logged in users to access this function use this hook
add_action('wp_ajax_nopriv_ACTION_NAME', 'my_AJAX_processing_function');
* si desea que los usuarios e invitados registrados accedan a su función mediante ajax, agregue ambos ganchos. * ACTION_NAME debe coincidir con el valor de acción en su POST de ajax.
entonces en su función solo asegúrese de que la solicitud provenga de una fuente válida
function my_AJAX_processing_function(){
check_ajax_referer('my_ajax_nonce');
//do stuff here...
}
Espero que esto ayude