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


49

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?

Respuestas:


47

la forma "más segura y limpia" sería usar admin-ajax.php que viene con wordpress y wp_ajaxhook 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


1
¿Esta implementación es buena solo para el lado administrativo? ¿Qué pasa con el lado del usuario? Quiero ocultar / wp-admin / y cambiar la URL del administrador, por lo que solicitar una URL oculta no será bueno
inferusvv
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.