¿Cuál es el método preferido para escribir complementos habilitados para AJAX?

48

Me pregunto cuál es el método preferido para tratar con las llamadas AJAX. ¿Debería uno usar el mismo archivo php de plugin para procesar el POST o uno separado? ¿Cuál es más limpio o más seguro?

    
pregunta James 13.02.2011 - 02:32

1 respuesta

47

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:

tu 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>

el archivo en tu complemento agregar

//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 que han iniciado sesión accedan a su función mediante ajax, añada ambos ganchos. * ACTION_NAME debe coincidir con el valor de acción en su POST de ajax.

luego, en su función, asegúrese de que la solicitud proviene de una fuente válida

function my_AJAX_processing_function(){
   check_ajax_referer('my_ajax_nonce');
   //do stuff here
}

Espero que esto ayude

    
respondido por el Bainternet 13.02.2011 - 03:14

Lea otras preguntas en las etiquetas