14

私は単純な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()は、ページの一番下に表示されるようにレンダリングされていると思いますか?

4

1 に答える 1

25

WordPress wp_head()メソッドは、WordPress wp_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);
于 2013-11-11T19:20:06.580 に答える