Qual é o método preferencial de escrever plugins habilitados para AJAX?

48

Eu estou querendo saber qual é o método preferido para lidar com chamadas AJAX. Deve-se usar o mesmo arquivo php do plugin para processar o POST ou um separado? Qual é o mais limpo ou seguro?

    
por James 13.02.2011 / 02:32
fonte

1 resposta

47

o modo "seguro e limpo" seria usar o admin-ajax.php que vem com o wordpress e o wp_ajax hook para chamar a função de processamento do seu arquivo plugin e usar o wp-nonce para verificar a integridade da chamada.

por exemplo:

sua chamada ajax JQuery seria

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

o no seu arquivo de plugins adiciona

//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');

* Se você deseja que usuários logados e convidados acessem sua função pelo ajax, adicione os dois ganchos. * ACTION_NAME deve corresponder ao valor da ação no seu POST ajax.

em seguida, na sua função, certifique-se de que a solicitação veio de uma fonte válida

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

Espero que isso ajude

    
por Bainternet 13.02.2011 / 03:14
fonte