我使用此代码将我的脚本包含在我的插件的管理页面中:
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
?
答案 0 :(得分:2)
您希望它在标题中加载的任何特殊原因?页脚与任何地方一样好,并确保它们以正确的顺序加载。
但由于总有特殊情况 - 这里是解决方案。 您需要取消注册每个脚本,因为它们最初注册时放在正文中。所以对于每个脚本:
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);
(当然,您可能需要调整这些变量,例如版本号或文件位置,具体取决于您的安装)
使这项工作成为最后一个变量,&#34; false&#34;: http://codex.wordpress.org/Function_Reference/wp_enqueue_script
$ in_footer(boolean)(可选)通常,脚本放在 HTML文档。如果此参数为true,则放置脚本 在结束标记之前。这要求主题具有 wp_footer()模板标记在适当的位置。默认值:false
编辑:根据要求,您可以在不使用任何路径或版本的情况下使用脚本执行此操作。
基本上,我们使用wordpress注册脚本,从wordpress&#39;复制脚本的源代码和版本。脚本全局,然后我们取消注册脚本,然后再次注册它,而不将其放在页脚中。
这是一个更新版本,可以处理您需要的所有脚本:
// 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
);
}
答案 1 :(得分:0)
你应该像这样排队你的脚本:
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一起提供。你只需要将它们排队。
答案 2 :(得分:0)
以下是wordpress Codex的代码。
<?php wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer ); ?>
所以在你的情况下,它变成,
<?php wp_enqueue_script('jquery', NULL , array(),NULL , FALSE );?>
如果你有其他的js文件,只需添加FALSE作为最后一个参数,它应该在头文件中加载它。如果他们是依赖的,那么使用这样的依赖。
修改强>
<?php wp_enqueue_script('somejs', 'http://example.com/wp-content/plugins/test/js/some.js', array( 'jquery' ),'1.0.0', FALSE );?>