J'essaie d'utiliser un nonce dans un plugin WordPress. J'ai un formulaire que je veux utiliser le nonce.Utilisation de Nonce avec Ajax dans WordPress Plugin
en php:
function csf_enqueue() {
//I have other scripts enqueued in htis function
wp_enqueue_script('my-ajax-handle', plugin_dir_url(__FILE__).'file-path', array('jquery', 'jquery-ui-core', 'jquery-ui-datepicker', 'google-maps'));
$data = array(
'ajax_url' => admin_url('admin-ajax.php'),
'my_nonce' => wp_create_nonce('myajax-nonce')
);
wp_localize_script('my-ajax-handle', 'the_ajax_script', $data);
}
add_action('wp_enqueue_scripts', 'csf_enqueue');
add_action('wp_ajax_the_ajax_hook', 'the_action_function');
add_action('wp_ajax_nopriv_the_ajax_hook', 'the_action_function');
Dans le fichier jQuery:
jQuery.post(the_ajax_script.ajaxurl, {my_nonce : the_ajax_script.my_nonce}, jQuery("#theForm").serialize() + "&maxLat="+ csf_dcscore_crime_map_bounds[0] + "&maxLong="+ csf_dcscore_crime_map_bounds[1] + "&minLat="+ csf_dcscore_crime_map_bounds[2] + "&minLong="+ csf_dcscore_crime_map_bounds[3],
function(response_from_the_action_function){
jQuery("#response_area").html(response_from_the_action_function);
});
Suis-je correctement l'affichage du nonce dans le jQuery?
en php:
function the_action_function() {
if(! wp_verfiy_nonce($nonce, 'myajax-nonce')) die ('Busted!');
//function continues
Toutes les suggestions? Si je retire tout le code concernant le nonce, tout fonctionne bien. Des idées sur pourquoi ça ne marche pas? Ou comment puis-je le déboguer? Je vous remercie!
Merci.
Salut sbrajesh, Je vous remercie beaucoup pour votre aide. J'ai apporté les modifications au code que vous avez suggéré. J'ai également supprimé le trait de soulignement dans 'ajaxurl'. Malheureusement, je reçois "Erreur fatale: Appel à la fonction indéfinie wp_verfiy_nonce()". On dirait que la fonction n'est pas chargée à temps pour une raison quelconque. Des idées? Je vous remercie ! – Laxmidi
J'ai aussi eu une faute d'orthographe dans wp_verify_nonce. Mauvaise frappe. Je vous remercie! – Laxmidi
Etes-vous sûr que cela fonctionne? Si elle ne changement '$ data = array ( 'ajax_url' => admin_url ('admin-ajax.php'), 'my_nonce' => wp_create_nonce ('myajax-nonce') );' à '$ data = array ( 'ajaxurl' => admin_url ('admin-ajax.php'), 'my_nonce' => wp_create_nonce ('myajax-nonce') ); ' ou de remplacer ajaxurl dans mon code avec ajax_url comme vous avez dans les données – sbrajesh