2013-04-28 39 views
0

我在WordPress中遇到了一个关于wp_enqueue_script()的奇怪事情,我想要发生的是通过在functions.php中添加一个动作钩子来在页面上添加一个脚本,但是当我这样做时,不要再增加脚本的页面上,但是当我把代码作为一个插件现在增加了脚本的页面上WordPress WP入队脚本问题

注:在functions.php的,当我在页脚添加脚本:add_action('wp_footer','function_name');它工作正常,但当我将它添加到wp_head和init时,它不会在我将代码放在functions.php上时添加脚本,但是当我将它作为插件来使用时,即使将它添加到wp_head和init上,它也可以正常工作

我需要添加脚本INIT或WP_HEAD,但它不工作的时候,我把该代码的functions.php我需要的脚本中部分的主题不是一个插件

//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'); 
    } 
} 

回答

1

适当挂钩的前端排队脚本是wp_enqueue_scriptshttp://codex.wordpress.org/Plugin_API/Action_Reference/wp_enqueue_scripts

+0

感谢您的答复,是的,我知道,但我真的需要回答我的问题,因为我关心的是为什么它是否包括脚本,当我把代码作为一个插件,并且不包括脚本时,我把它放在函数上。php – 2013-04-29 04:36:07

+0

'init'在加载所有插件后触发。你可以尝试挂接到'plugins_loaded':http://codex.wordpress.org/Plugin_API/Action_Reference/plugins_loaded – diggy 2013-04-29 11:43:44

+0

也没工作,请仔细阅读上面的编辑,让你知道究竟是什么,我试图做的。谢谢 – 2013-04-30 02:57:32

2

有可以发生几件事情,但由于问题只发生在functions.php,所以人们会认为这是与主题相关的。 你应该确保该主题有两个:

wp_head() - (即将进行之前</head>

而且

wp_footer() -

(立即关闭</body>之前)如果没有包括主题作者或者即使其中一个功能缺少主题,脚本也可能无法加载。 (和80%的插件都会有问题)。

而且,你没有指定使用哪个主题(你自己的代码?),如果它是一个子主题与否。

您正在使用get_template_directory_uri()哪些不能被子主题覆盖,我不知道这是否是问题的一部分,但您可能也想尝试使用,在许多情况下,这是更好的选择。

看到您的更新:

这是一个非常不好的做法,用另一个withpout后备更换jQuery核心。 总之,你CA尝试掉落!is_admin()条件,或者注销,看你的网站代码。 (我正在调试它,而在与在WP管理栏记录的感觉..)

+0

是我试图创建自己的母题,真的很奇怪,当我使用ADD_ACTION入队的脚本(“初始化”,“前执行”);作为一个WordPress插件它成功地包括脚本,但是当我在functions.php中做它不包括 – 2013-04-29 08:53:41

+1

你读过我写的剧本?你有wp_head()和wp_footer()吗? – 2013-04-29 11:10:14

+0

是的我看了你的回复我都wp_header()和wp_footer()在正确的地方,它应该是在里面!is_admin因为功能仅仅是前端和我的时候我不使用其他的问题!is_admin废墟我的精选后期图片上传器,这是我使用is_admin除了前端目的之外的原因之一 – 2013-04-30 03:35:18