WordPress WP排队脚本问题

时间:2013-04-28 22:00:13

标签: wordpress wordpress-theming

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

2 个答案:

答案 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_scriptshttp://codex.wordpress.org/Plugin_API/Action_Reference/wp_enqueue_scripts