web-dev-qa-db-ja.com

スクリプトローカライゼーションが機能しない

私はどのようにしてスクリプトのローカライズがワードプレスで機能するのかわかりません。私はphpで連想配列を作成しました:

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

私はこの配列を使いたい簡単なJavaScriptファイルを作成しました:

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

それから私はこのjavascriptファイルを次のように自分のプラグインにエンキューしてローカライズしようとします。

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' );

しかし、私がこのJavaScriptファイルを使ってページをロードすると、alertは 'translations'オブジェクトがnullであることを教えてくれます。
私は何を取りこぼしたか?

1
anton

変数スコープについての答え からのコピー

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.

そのため、次のように$translations関数内にkvkoolitus_load_comment_validation配列を追加する必要があります。

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