web-dev-qa-db-fra.com

Erreur fatale: appel de la fonction non définie wp_create_nonce ()

J'essaie d'ajouter un nonce à l'Ajax de mon plugin. Je ne sais pas pourquoi je reçois cette erreur:

Erreur fatale: appel de la fonction non définie wp_create_nonce ()

Dans mon fichier php:

wp_localize_script('my-ajax-handle', 'the_ajax_script', array('ajaxurl'=> admin_url('admin-ajax.php'), 'my_nonce' => wp_create_nonce('myajax-nonce')));

En fichier js:

jQuery.post(the_ajax_script.ajaxurl, {my_nonce : the_ajax_script.my_nonce}, jQuery("#theForm").serialize() + "&maxLat="+ map_bounds[0] + "&maxLong="+ map_bounds[1] + "&minLat="+ map_bounds[2] + "&minLong="+ map_bounds[3],
    function(response_from_the_action_function){
       jQuery("#response_area").html(response_from_the_action_function);
    });

Des suggestions sur la façon de résoudre ceci?

Je vous remercie.

3
Laxmidi

Plus de contexte serait utile. Est-ce que tout le code trouvé dans votre plugin ou fichier de fonctions directement? Ou êtes-vous connecté à quelque chose via add_action.

Quoi qu'il en soit, ce qui ne va probablement pas, c'est que vous appelez wp_localize_script et wp_enqueue_script en dehors d'une action. wp_create_nonce, ou plutôt le fichier dans lequel il réside, n'a pas encore été chargé.

La solution consiste à appeler wp_localize_script depuis une fonction raccordée à wp_enqueue_scripts

<?php
add_action( 'wp_enqueue_scripts', 'wpse30583_enqueue' );
function wpse30583_enqueue()
{
    // your enqueue will probably look different.
    wp_enqueue_script( 'wpse30583_script' );

    // Localize the script
    $data = array( 
        'ajax_url' => admin_url( 'admin-ajax.php' ),
        'nonce'    => wp_create_nonce( 'wpse30583_nonce' )
    );
    wp_localize_script( 'wpse30583_script', 'wpse3058_object', $data );
}
6
chrisguitarguy