前提・実現したいこと
WordPressのwp_headを使い、PHPからJavaScriptへ、連想配列(以下「JSオブジェクト」)を出力しています。
これを美しくしたいです。
発生している問題・エラーメッセージ
JSオブジェクトでなくテキストになってしまいます。
該当のソースコード
functions.phpでwp_headを使い、次のような出力をしています。
ですが申し上げました通り、JSオブジェクトでなくテキストになってしまいます。
PHP
1add_action( 'wp_head', 'my_wp_head_defines' ); 2function my_wp_head_defines() { 3 $data1 = json_encode( ['a'=>1,'b'=>2] ); 4 $data2 = json_encode( ['c'=>1,'d'=>2] ); 5 $data3 = json_encode( ['e'=>1,'f'=>2] ); 6 echo "<script> 7 var data1 = '$data1'; 8 var data2 = '$data2'; 9 var data3 = '$data3'; 10 </script>"; 11}
試したこと
まとめてechoせず個別にしましたらテキストでなくJSオブジェクトになりましたが・・
data1、data2、data3などいろいろあるために、このようにechoを何度も書きたくありません。
狂ったようにechoを書くハメになってしまいます。
PHP
1add_action( 'wp_head', 'my_wp_head_defines2' ); 2function my_wp_head_defines2() { 3 $data1 = json_encode( ['a'=>1,'b'=>2] ); 4 $data2 = json_encode( ['c'=>1,'d'=>2] ); 5 $data3 = json_encode( ['e'=>1,'f'=>2] ); 6 echo '<script>var data1 = ' . $data1 . '</script>'; 7 echo '<script>var data2 = ' . $data2 . '</script>'; 8 echo '<script>var data3 = ' . $data3 . '</script>'; 9}
または問題の発生する該当のソースコードを使ってテキストで出力したまま、受け取ったJS側で改めてJSオブジェクトにパースする方法でも解決しますが、なおさら美しくありません。死んだ方がマシです。
いったいどうすれば、echoを何度も書いたり、改めてパースしたりなどぜず、美しく出力することができますでしょうか?
###追記
またテキストの出力もございますので、echoを何度も書く方法だと次のようになります。
統一感も欠き、美しさのかけらもございません。死んだ方がマシです。
php
1add_action( 'wp_head', 'my_wp_head_defines3' ); 2function my_wp_head_defines3() { 3 $data1 = json_encode( ['a'=>1,'b'=>2] ); 4 $ajaxurl = admin_url( 'admin-ajax.php' ); 5 6 // 以下のように統一感に欠けて大変不細工です 7 echo "<script>var ajaxurl = '$ajaxurl';</script>"; 8 echo '<script>var data1 = ' . $data1 . '</script>'; 9}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/25 22:11