web-dev-qa-db-fra.com

Qui passe PHP Variables vers JS à l'aide du script de localisation

J'essaie de transmettre certaines variables (auteur du message, catégorie du message et titre du message) à un fichier js à l'aide de wp_localize_script.

Je ne peux pas, pour la vie de moi obtenir ces correctes. Comment puis-je extraire ces données sur le message actuellement affiché?

Code actuel:

wp_enqueue_script( 'stats', get_stylesheet_directory_uri() .'/js/t5-demo.js' , array( 'jquery' ), '1.0.0', true );

$categories = implode( ', ', wp_list_pluck( get_the_category( get_the_ID() ), 'name' ) ); 
$datatoBePassed = array(
    'author' =>  get_queried_object()->post_author,
    'category'   => $categories,
    'title'      => single_post_title( '', false )
);
wp_localize_script( 'stats', 'php_vars', $datatoBePassed );

Vous trouverez ci-dessous un exemple de ce qui fonctionne (il suffit de coller des chiffres statiques), je pense donc que cela a quelque chose à voir avec le fait que j'essaie d'extraire ces variables de la publication en cours d'affichage.

 wp_enqueue_script( 'stats', get_stylesheet_directory_uri() .'/js/t5-demo.js' , array( 'jquery' ), '1.0.0', true );

    $categories = implode( ', ', wp_list_pluck( get_the_category( get_the_ID() ), 'name' ) ); 
    $datatoBePassed = array(
        'author' =>  '10',
        'category'   => '11',
        'title'      => '12'
    );
    wp_localize_script( 'stats', 'php_vars', $datatoBePassed );
1
js111

Votre code doit être dans une fonction de rappel d'action:

function wpse186202_enqueue_scripts(){
    wp_enqueue_script( 'stats', get_stylesheet_directory_uri() .'/js/t5-demo.js' , array( 'jquery' ), '1.0.0', true );

    $categories = implode( ', ', wp_list_pluck( get_the_category( get_the_ID() ), 'name' ) ); 
    $datatoBePassed = array(
        'author' =>  get_queried_object()->post_author,
        'category'   => $categories,
        'title'      => single_post_title( '', false )
    );
    wp_localize_script( 'stats', 'php_vars', $datatoBePassed );
}

add_action( 'wp_enqueue_scripts', 'wpse186202_enqueue_scripts' ); //Front end enqueueing
add_action( 'admin_enqueue_scripts', 'wpse186202_enqueue_scripts' ); //Admin enqueueing

L'action appellera la fonction au bon moment pour qu'elle soit correctement mise en file d'attente. Choisissez celui qui fonctionne pour l'endroit où vous voulez le mettre en file d'attente.

1
Manny Fleurmond