質問: ### 実現したいこと オートコンプリートの実装にあたり、jQueryの読み込みを適切なタイミングにしたいです。 ### ソースコードと問題点 まずこちらのソースコードで、オートコーンプリート自体はできています。 ``` ``` しかしある事情(後述の補足)により上のjQueryを「single.php」に直接書いておりまして、その場合にオートコンプリートが効かなくなるというのが問題です。 ### 試したこと ご参考になるかわかりませんが、上のjQueryを「single.php」ではなく「my_js.js」というファイルに書いて次のようにフッターで読み込めば、オートコンプリートが効くようになります。 functions.php ``` wp_register_script( 'my_js', 'http://example.com/wp-content/themes/simplicity-child/js/my_js.js', array('jquery'), date('U'), true); ``` しかしこの読み込みタイミングを「`true`(フッター)」から「`false`(ヘッダー)」にすると効かなくなってしまいますので、どうやら問題の原因は読み込みタイミングにあるように思われます。 とはいえこの原因がわかっても、「single.php」に直接書いている限り読み込みタイミングをフッター側になど変更できません。(自分はその方法を知りません。) どのようにすれば上のjQueryを「single.php」に直接書いたままで、オートコンプリートを実装できるでしょうか? ### 補足 ちなみに上のjQueryを「single.php」に直接書かなければならないワケは、「single.php」のget_termsで取得したタクソノミーを、JSONで配列に渡して、オートコンプリート用に使うためです。 (このときjQueryを「my_js.js」に書いても「single.php」のタクソノミーが取得できないので、「single.php」に直接書いているという感じです。)
回答: > > 「single.php」のget_termsで取得したタクソノミーを、JSONで配列に渡して > > > WPにはPHPのデータをjsに渡すための方法として wp_localize_scriptっていう関数が用意されてるのでそれを使いましょう そうすれば直書きのJSのコード内にjsonを出力する必要もないです > > 「single.php」に書きつつ、フッターで読ませるような方法 > > > これはwp_print_footer_scriptsのフィルタフックでscriptタグを出力する感じで callbackは無名関数にしてuseでデータを渡してやるとかする感じで