是否将wp_enQueue_脚本强制到标头?

时间:2014-03-25 作者:Branndon

我正在使用的插件要求在处理内容之前加载jquery。一些股票主题,比如2010年、2011年和2012年(我相信)把JS放在了页脚。

如何强制将脚本加载到标题中(我将通知插件的用户插件需要这样做)?

5 个回复
最合适的回答,由SO网友:Nicolai Grossherr 整理而成

的正常行为wp_enqueue_script 是将脚本输出放入head部分,参数$in_footer 是可选的,默认为false. 因此,您可以将jQuery和插件一起加载到头部,并且假设您处理的主题/插件编程良好,它不会再次加载,因为wp_enqueue_script 默认情况下阻止此操作-有关此操作的其他信息here.

SO网友:Andrew Bartel

wp\\u enqueue\\u script()的第三个参数允许您为正在排队的脚本声明依赖关系,即它们需要哪些其他脚本才能运行。

add_action( \'wp_enqueue_scripts\', \'include_script_that_depends_on_jquery\' );

function include_script_that_depends_on_jquery() {
    wp_enqueue_script( \'my_script.js\', \'/path/to/my_scripts.js\', array( \'jquery\' ) );
}
这样,无论在何处加载任何主题、插件或jquery,您的脚本都将始终稍后加载,前提是它们也遵循最佳实践,并且不会取消注册。

SO网友:TheDeadMedic

例如,如果我想要一个简单的jQuery(“body”)。css(“背景色”、“红色”);从身体的一个短代码中执行,我做不到。假设我的短代码是[body color=red],但jquery直到页脚才加载,那么我的代码就不能工作了。

在短代码处理程序中,可以返回HTML占位符元素或JavaScript变量,然后挂接到wp_footer 使用另一个“运行”jQuery的函数。

function wpse_139154_shortcode( $atts ) {
    // Awesome code

    wp_enqueue_script( \'jquery\' ); // Will output in the footer if not already in the head
    add_action( \'wp_footer\', \'wpse_139154_shortcode_script\', 100 ); // Ensure we run after wp_print_footer_scripts

    return <<<html
<script>
    var arguments = arguments || {}; arguments.backgroundColor = "{$atts[\'color\']}";
</script>
html;
}

function wpse_139154_shortcode_script() {
    echo <<<html
<script>jQuery( "body" ).css( arguments );</script>
html;
}

SO网友:Rangel Nikolov

根据WP参考wp_enqueue_scripts

wp_enqueue_script( string $handle, string $src = false, array $deps = array(), string|bool|null $ver = false, bool $in_footer = false )
最后一个参数负责脚本的加载位置。有一些障碍可以改变他的行为!尝试从函数中查找并注释/删除此行。php文件

remove_action(\'wp_head\', \'wp_print_scripts\');
remove_action(\'wp_head\', \'wp_print_head_scripts\', 9);
remove_action(\'wp_head\', \'wp_enqueue_scripts\', 1);
add_action(\'wp_footer\', \'wp_print_scripts\', 5);
add_action(\'wp_footer\', \'wp_enqueue_scripts\', 5);
add_action(\'wp_footer\', \'wp_print_head_scripts\', 5);
这六个操作的目的是自动将JavaScript代码移动到页脚,使wp\\u enqueue\\u脚本中的最后一个参数无效!如果无法删除此操作,则可以更改其优先级。每个示例从5到9999。根据优先顺序进行选择,找到适合自己的优先顺序。

您还需要检查是否在$deps数组中指定了一些依赖项。Witch gone强制在解析后加载脚本。

不要尝试任何肮脏的黑客行为,这是一种不好的做法

快乐编码

SO网友:Abhik

首先,将主题排入队列的jQuery出列。然后再次排队。

function jquery_at_header() {
    // De-Queue current jQuery 
    wp_dequeue_script( \'jquery\' );

    // Re Enqueue jQuery
    wp_enqueue_script( \'jquery\' );

    //Then your script
    wp_enqueue_script( \'script-name\', plugins_url( \'js/scrip-name.js\' , __FILE__ ), array( \'jquery\' ), \'1.0\' );
}
add_action( \'wp_enqueue_scripts\', \'jquery_at_header\', 5 );
你可能需要利用优先权来获得你需要的东西。

结束

相关推荐

在WordPress页面中加载自定义jQuery和HTML

我有一个简单的应用程序,我已经在工作,并希望加载到我的WordPress主题。此应用程序具有/js 具有的文件夹myscript.js, A./css 具有的文件夹mystyle.css 和HTML文件index.html.这是fiddle to the whole app.我正在使用默认的WordPress主题,我只想为这个应用程序创建一个页面并加载到那里。这样我就可以创建另一个页面并加载另一个应用程序。所做的努力:根据我所读的内容,我需要将我的自定义JS脚本排队,我已经这样做了,并将其添加到funct