説明
wp_localize_script() は、登録済みのスクリプトに、PHPのデータをJavaScriptの変数として渡す関数です。
基本構文
wp_localize_script( string $handle, string $object_name, array $l10n ): bool
引数
$handle:対象のスクリプト識別名$object_name:JavaScript側のオブジェクト名$l10n:渡す値の配列
戻り値
成功すれば true。
使い方(サンプル)
wp_enqueue_script( 'my-script', get_theme_file_uri( 'js/app.js' ), array(), '1.0', true );
wp_localize_script( 'my-script', 'MyData', array(
'ajaxUrl' => admin_url( 'admin-ajax.php' ),
'nonce' => wp_create_nonce( 'my_action' ),
) );
注意点
- 先に
wp_enqueue_script()かwp_register_script()で登録しておく必要があります。 - 値は文字列に変換されます。数値や真偽値は、JS側で型変換が必要です。
- 型を保ったまま渡したい場合は、
wp_add_inline_script()とwp_json_encode()を使います。
実務での使いどころ
- PHPの値(Ajaxの送信先URL、nonceなど)を、JavaScriptへ渡すとき。
- 翻訳した文字列を、JavaScriptへ渡すとき。
よくあるミスと対処
- スクリプトを登録・読み込みする前に呼び、何も渡らない。対象のハンドルを、先に登録する。
- 配列のトップレベルにある、数値や真偽値は、文字列に変換される(ネストした配列の中は、型が保たれる)。型を保ちたいときは、
wp_add_inline_script()とwp_json_encode()を使う。 $object_nameが、JavaScriptのグローバル変数になる。他と重ならない名前にする。
NG例
wp_localize_script( 'my-script', 'myData', array( 'limit' => 10 ) ); // JavaScript側では、"10" の文字列になる
OK例
wp_add_inline_script(
'my-script',
'const myData = ' . wp_json_encode( array( 'limit' => 10 ) ) . ';',
'before'
);
使い分け早見表
| 関数 | 特徴 |
|---|---|
wp_localize_script() |
PHPの配列を、JavaScriptのオブジェクトとして渡す(トップレベルの数値・真偽値は、文字列になる) |
wp_add_inline_script() |
インラインのJavaScriptを追加する(型を保ったまま渡せる) |
wp_enqueue_script() |
スクリプトを読み込む |
関連項目
wp_add_inline_script()、wp_enqueue_script()、wp_create_nonce()
公式リファレンス:wp_localize_script() | Function | WordPress Developer Resources

コメント