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 );

并查看以下两种 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 回答