私はどのようにしてスクリプトのローカライズがワードプレスで機能するのかわかりません。私は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であることを教えてくれます。
私は何を取りこぼしたか?
変数スコープについての答え からのコピー
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' );