今回はワードプレスの値をJavaScriptに渡す方法です。ワードプレスからじゃなくてPHPからJavaScriptへ値を渡す方法もご紹介します。
PHPの値をJavaScriptで処理を行う場合などに有効ですね。最近はJavaScript処理多くなったのでこのようなパターンもあるかと思います。
単純にPHPの値をJavaScriptに渡すだけなのですがワードプレスの場合だと関数を使わないとうまく処理できない場合がありますので一応区別しておきます。
wp_localize_script($handle, $name, $data)
使い方の例を見ていきましょう。ワードプレスのfunctions.phpに以下を記載します。
<?php
function sample_scripts(){
// sample-pageというページの場合のみ
if(is_page(['sample-page'])){
// phpの値を受け取るjavascriptを読み込みます。
wp_enqueue_script('some_handle', 'path/to/myscript.js', array( 'jquery' ), false, true);
// phpの配列を$data_array変数に格納します
$data_array = array('some_string' => 'texttext', 'a_value' => '10');
// javascript変数で処理します。
wp_localize_script('some_handle', 'object_name', $data_array);
}
}
add_action( 'wp_enqueue_scripts', 'sample_scripts' );
上記のsome_handleのスクリプトに$data_arrayの配列をobject_nameというjavaScriptの変数にて扱いますということになります。
以下は上記が実行されたら以下のように表示されます。
特定のページだけに使うことが多いと思いますのでif文で条件分岐をしております。全部のページに出てもよろしくないので。
<script type='text/javascript'>
/* <![CDATA[ */
var object_name = {"some_string":"texttext","a_value":"10"};
/* ]]> */
</script>
<script type='text/javascript' src='path/to/myscript.js'></script>
myscript.jsのファイルでobject_nameというJavaScript変数が使えるようになります。上記に例でいえばobject_name.some_stringにtexttextという値があってobject_name.a_valueに10という値が入っていることになります。
特定のPHPファイルの一番上に記載します。
//JSON形式に変換する関数を定義
function json_safe_encode($data){
return json_encode($data, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT);
}
$data_array = array('some_string' => 'texttext', 'a_value' => '10');
head要素内か閉じbodyタグ上の方でJavaScriptに値を渡すファイル名でidとdata-paramというカスタムデータ属性をつけてそこから値を取り出す方法です。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script id='setparam' data-param='<?php echo json_safe_encode($data_array);?>' src='path/to/myscript.js'></script>
// myscript.js内に記載
var set = $('#setparam');
var data = JSON.parse(set.attr('data-param'));
console.log(data);
因みに上記の方法でワードプレスではうまくいきませんでした。関数で渡した方がセキュアということでしょうか。
参考になれば幸いです。
∞Tadashi Suyama∞
あまりcgiは使いたくないのですが使わざるを得ない時があります。仕方なく設置するのですがエラーが出ちゃうんです。なんか知らないけど。 ありがちなのがパーミッションとかパスが問題になるんのですけど...
19 Feb 2022
今回はワードプレス専用のアドレス変更方法をご紹介します。ワードプレスのアドレスはwordpress@~という形で送られてきますが変更可能です。 functions.phpに記載するのですがプラグ...
12 Feb 2022
Sassの遷移は多すぎる今日この頃 Ruby Sass→LibSass→DartSass(いまここ) Ruby SassはSassの最初の実装でしたが、2019年3月26日にサポートが終了しま...
22 Jan 2022
明けましておめでとうございます。 本年も何卒よろしくお願いいたします。 年末年始は雪でしたね、そこまで積もっていませんが。 {% include adsensearticle.html...
10 Jan 2022
最近はjQueryよりvueで書いた方が楽ではないかと思い学習中です。 そもそもVuejsはドキュメントが日本語対応なので試しやすいし情報も豊富なので学習しやすいです。 3大フレームワークと呼...
02 May 2021
ウェブエンジニアの須山のブログです。
WEBに関することや個人的に関心のあることについて書きます。主に技術系ブログです。