単純なWordpressアプリを開発していますが、すべてのプラグインスクリプトが、_functions.php
_にキューに入れられる前にレンダリングされるため、問題が発生しています。
_functions.php
_のサンプルセクションは次のとおりです。
_function my_scripts() {
wp_register_script('app-js', get_template_directory_uri() . '/javascripts/app.js', array('jquery'), null, true );
wp_enqueue_script('app-js');
}
add_action( 'wp_enqueue_scripts', 'my_scripts');
_
これが注意すべき重要な点は、(ベストプラクティスに従って、私のJSはページの下部にレンダリングするように設定されているということです。
また、テーマで実行されているプラグインがいくつかあります。問題は、出力が次のようになることです。
_<!-- Note the plugin appears first -->
<script type='text/javascript' src='http://localhost/wordpress/wp-content/plugins/my-plugin/acl-plugin.js'></script>
<!-- And the main JS appears second -->
<script type='text/javascript' src='http://localhost/wordpress/wp-content/themes/my-theme/javascripts/app.js'></script>
</body>
</html>
_
WordpressにメインJSを表示させるにはどうすればよいですか(wp_head()
によってレンダリングされてページの一番下に表示されると思いますか?
WordPresswp_head()メソッドは、WordPresswp_enqueue_script()の最後のパラメーターを持つスクリプトまたはスタイルのみを出力しますfalse..に設定trueに設定すると、wp_footer()
add_action()の$ priorityパラメーターを調整することにより、呼び出されて挿入されるときの優先度を変更できます。
http://codex.wordpress.org/Function_Reference/add_action
$ priority(int)(オプション)特定のアクションに関連付けられた関数が実行される順序を指定するために使用されます。小さい数字は以前の実行に対応し、同じ優先度の関数はアクションに追加された順序で実行されます。デフォルト:10
add_action( $hook, $function_to_add, $priority, $accepted_args );
また、次の2つのWordPressメソッドも確認してください。
wp_enqueue_script():
https://developer.wordpress.org/reference/functions/wp_enqueue_script/
wp_enqueue_script( string $handle, string $src = '', array $deps = array(), string|bool|null $ver = false, bool $in_footer = false )
wp_register_script():
https://developer.wordpress.org/reference/functions/wp_register_script/
wp_register_script( string $handle, string $src, array $deps = array(), string|bool|null $ver = false, bool $in_footer = false )
これを試して..
その$ priorityパラメータで遊ぶ必要があるかもしれません
function my_scripts() {
wp_register_script('app-js', get_template_directory_uri() . '/javascripts/app.js', array('jquery'), null, true );
wp_enqueue_script('app-js');
}
add_action( 'wp_enqueue_scripts', 'my_scripts', 20, 1);