web-dev-qa-db-fra.com

La localisation de script ne fonctionne pas

Je ne comprends pas comment fonctionne la localisation de script dans Wordpress. J'ai créé un tableau associatif en php:

$translations = array(
    'value1'  =>'This is first value',
    'value2'  =>'This is second value'
    ); 

J'ai créé un simple fichier javascript où je veux utiliser ce tableau:

jQuery(document).ready(function($){
    alert(translations);
});

Ensuite, j'essaie de mettre en file d'attente et de localiser ce fichier javascript dans mon plugin comme ceci:

function kvkoolitus_load_comment_validation(){
  wp_enqueue_script( 'simple-js', plugin_dir_url( __FILE__ ) . 'js/jquery.simple.js', array('jquery'), '', true );
  wp_localize_script( 'simple-js', 'translations', $translations );
}

add_action( 'wp_enqueue_scripts', 'kvkoolitus_load_comment_validation' );

Mais lorsque je charge une page avec ce fichier javascript, alert me dit que l'objet 'translations' est null.
Qu'est-ce que j'ai raté?

1
anton

Copier la réponse ici concernant la portée variable

Variables inside a function are only available inside that function. 
Variables outside of functions are available anywhere outside of functions, 
but not inside any function.

Pour cette raison, vous devez ajouter votre tableau $translations dans la fonction kvkoolitus_load_comment_validation, comme

function kvkoolitus_load_comment_validation(){
  $translations = array(
    'value1'  =>'This is first value',
    'value2'  =>'This is second value'
  ); 
  wp_enqueue_script( 'simple-js', plugin_dir_url( __FILE__ ) . 'js/jquery.simple.js', array('jquery'), '', true );
  wp_localize_script( 'simple-js', 'translations', $translations );
}

add_action( 'wp_enqueue_scripts', 'kvkoolitus_load_comment_validation' );
1
czerspalace