我在WordPress中遇到一个关于wp_enqueue_script()
的奇怪的事情,我想要发生的是通过向functions.php添加动作挂钩来在页面上添加脚本但是当我这样做时,它不会在页面上添加脚本,但是当我将代码作为插件添加时,它现在会在页面上添加脚本
注意:在functions.php中我在页脚中添加脚本:add_action('wp_footer','function_name');
它工作正常但是当我在wp_head和init上添加它时它不会添加脚本当我把代码放在functions.php
上的时候,但是当我把它作为一个插件时,即使我把它添加到wp_head和init
我需要在INIT或WP_HEAD上添加脚本,但是当我将代码放在功能上时它不起作用。我需要将脚本作为主题的一部分而不是作为插件
//functions.php
add_action('init', 'function_name');
function function_name(){
wp_enqueue_script( 'script_holder', get_template_directory_uri() . '/script.js');
}
//as a plugin
add_action('init', 'function_name');
function function_name() {
$plugin_location=WP_PLUGIN_URL.'/'.str_replace(basename( __FILE__),"",plugin_basename(__FILE__));
if( !is_admin()){
wp_enqueue_script( 'script_holder', $plugin_location . '/script.js');
}
}
我知道它甚至应该在functions.php中工作,但我真的很想知道为什么会这样 任何人都可以帮助我并向我解释为什么会发生这种情况,拜托?
非常感谢
基本上这正是我正在做的事情:
add_action('init', 'override_jquery');
function override_jquery() {
if( !is_admin()){
wp_deregister_script('jquery');
wp_enqueue_script( 'nashgraphics_jquery_library', get_template_directory_uri() . '/bootstrap/js/jquery-1.9.0.min.js');
}
}
答案 0 :(得分:2)
可能会有几件事情发生,但由于问题只发生在functions.php
,因此人们会认为这与主题相关。
你应该确定主题有两个:
wp_head()
- (紧接</head>
之前)
并且
wp_footer()
- (在关闭</body>
之前)
如果主题作者未同时包含这两者,或者即使其中一个功能缺少主题,脚本也可能无法加载。 (并且80%的插件都有问题)。
此外,您没有指定您使用的主题(您自己的代码??)以及它是否是儿童主题。
您使用的get_template_directory_uri()
无法被子主题覆盖,我不知道这是否是问题的一部分,但您可能还想尝试使用get_stylesheet_directory_uri()
案件是更好的选择。
查看您的更新:
将核心jQuery替换为另一个具有后备功能的核心jQuery是一种非常糟糕的做法。 无论如何,您可以尝试删除!is_admin()条件,或者注销并查看您的站点代码。 (我有一种感觉,你在登录时调试它,并使用wp管理栏...)
答案 1 :(得分:1)
在前端排队脚本的正确挂钩是wp_enqueue_scripts
:http://codex.wordpress.org/Plugin_API/Action_Reference/wp_enqueue_scripts