我使用这段代码将我的脚本包含在插件的管理页面中:
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中
发布于 2015-03-04 09:23:42
有什么特别的原因你想要它加载在头吗?页脚和任何地方一样好,并确保它们按照正确的顺序加载。
但是,由于总是有特殊情况-这是解决办法。您需要取消每个脚本的注册,因为它们最初是注册到体内的。因此,对于每个脚本:
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的脚本全局复制脚本的源代码和版本,然后取消脚本注册,然后重新注册它,而不把它放在页脚中。
下面是处理所有需要的脚本的更新版本:
// 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
);
}发布于 2015-03-04 11:15:26
您应该像这样对脚本进行排队:
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中。你只需要让他们排好队。
发布于 2015-03-04 11:29:44
这是wordpress的代码。
<?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 );?>https://stackoverflow.com/questions/28850314
复制相似问题