首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >head中的Enqueue管理脚本

head中的Enqueue管理脚本
EN

Stack Overflow用户
提问于 2015-03-04 09:03:45
回答 3查看 1K关注 0票数 1

我使用这段代码将我的脚本包含在插件的管理页面中:

代码语言:javascript
复制
add_action('admin_enqueue_scripts', 'enqueue_my_scripts');

function enqueue_my_scripts() {
    wp_enqueue_script('jquery');

    wp_enqueue_script('jquery-ui');
    wp_enqueue_script('jquery-ui-tabs');
    wp_enqueue_script('jquery-ui-sortable');
}

它可以工作,但是jquery正在添加到<head>标记中,而所有其他脚本都是在<body>标记的底部添加的。

我想把所有的脚本都包含在插件管理页面的头上。

有没有办法告诉wordpress将它们包含在head中而不是body

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-04 09:23:42

有什么特别的原因你想要它加载在头吗?页脚和任何地方一样好,并确保它们按照正确的顺序加载。

但是,由于总是有特殊情况-这是解决办法。您需要取消每个脚本的注册,因为它们最初是注册到体内的。因此,对于每个脚本:

代码语言:javascript
复制
wp_deregister_script('jquery-ui-sortable');
wp_enqueue_script('jquery-ui-sortable', site_url('/wp-includes/js/jquery/ui/jquery.ui.sortable.min.js'), array('jquery', 'jquery-ui'), '1.11.2', false);

(当然,您可能需要根据安装情况调整这些变量,例如版本号或文件位置)

使此工作的是最后一个变量"false":script

$in_footer (布尔值)(可选)通常,脚本被放在HTML中。如果此参数为真,脚本将放在结束标记之前。这需要主题将wp_footer()模板标记放在适当的位置。缺省值: false

编辑:按照要求,下面是如何在不使用任何路径或版本的情况下使用脚本来完成此操作。

基本上,我们用wordpress注册脚本,从wordpress的脚本全局复制脚本的源代码和版本,然后取消脚本注册,然后重新注册它,而不把它放在页脚中。

下面是处理所有需要的脚本的更新版本:

代码语言:javascript
复制
// Add your script names to this array.
$scripts = array('jquery-ui-sortable', 'jquery-ui-tabs', 'jquery-ui-sortable');
// Register the original scripts.
foreach($scripts as $script) {
    wp_enqueue_script($script);
}
// This global contains all of wordpress' registered scripts.
global $wp_scripts;
$sources = array();
// Loop through the registered scripts, copy the data we need.
foreach($wp_scripts->registered as $name => $data) {
    if(in_array($name, $scripts)) {
        $sources[$name]['src'] = $data->src;
        $sources[$name]['ver'] = $data->ver;
        $sources[$name]['deps'] = $data->deps;
    }
}
// Loop through our selected scripts, deregister them, then register
// them again, only this time using 'false' to put them in the head.
foreach($scripts as $script) {
    wp_deregister_script($script);
    wp_enqueue_script(
        $script,
        site_url($sources[$script]['src']),
        $sources[$script]['deps'],
        $sources[$script]['ver'],
        false
    );
}
票数 2
EN

Stack Overflow用户

发布于 2015-03-04 11:15:26

您应该像这样对脚本进行排队:

代码语言:javascript
复制
add_action('admin_enqueue_scripts', 'enqueue_my_scripts');

function enqueue_my_scripts() {

    $dependencies = array('jquery-ui','jquery-ui-tabs','jquery-ui-sortable');
    $in_footer = false;

    wp_enqueue_script( 
        $your_script_handle, 
        $source_of_your_script, 
        $dependencies, $version, $in_footer
    );

}

$in_footer是告诉wordpress是否要在页脚或页头中对脚本进行队列的参数。如果设置为true,脚本将在页脚中呈现,如果设置为false,则在头中呈现。

如果您希望'jquery-ui','jquery-ui-tabs','jquery-ui-sortable'与您的插件一起使用,那么这意味着您的插件有一些dependencies

$dependencies变量引用包含脚本所需依赖项的数组。如果脚本需要更多依赖项,则添加更多内容。

如果您的脚本没有特定的版本,$version可以保留为空,如$version = ''

默认情况下,脚本需要的依赖项(特别是在您的情况下)附带在WordPress中。你只需要让他们排好队。

票数 0
EN

Stack Overflow用户

发布于 2015-03-04 11:29:44

这是wordpress的代码。

代码语言:javascript
复制
<?php wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer ); ?>

所以在你的情况下,

代码语言:javascript
复制
<?php wp_enqueue_script('jquery', NULL , array(),NULL , FALSE );?>

如果您有其他js文件,只需添加FALSE作为最后一个参数,它应该将其加载到头中。如果他们是受抚养人,那么就像这样使用依赖关系。

编辑:

代码语言:javascript
复制
<?php wp_enqueue_script('somejs', 'http://example.com/wp-content/plugins/test/js/some.js', array( 'jquery' ),'1.0.0', FALSE );?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28850314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档