Je me demande quelle est la méthode préférée pour traiter les appels AJAX. Faut-il utiliser le même fichier plugin php pour traiter le POST ou un autre? Lequel est plus propre ou plus sûr?
la méthode "plus sûre et plus propre" consisterait à utiliser admin-ajax.php fourni avec wordpress et wp_ajax
hook pour vous appeler à la fonction de traitement depuis votre fichier de plug-in et à utiliser wp-nonce pour vérifier l'intégrité de l'appel.
par exemple:
votre appel ajax JQuery serait
<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>
le dans votre fichier de plugin ajouter
//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 vous voulez que les utilisateurs connectés et les invités accèdent à votre fonction en ajax, ajoutez les deux points d'ancrage. * ACTION_NAME doit correspondre à la valeur de l'action dans votre POST ajax.
alors, dans votre fonction, assurez-vous que la demande provient d'une source valide
function my_AJAX_processing_function(){
check_ajax_referer('my_ajax_nonce');
//do stuff here
}
J'espère que cela t'aides