WordPress wp_register_script函数没有在页脚中加载脚本

时间:2011-04-19 20:47:05

标签: php jquery wordpress wordpress-plugin footer

我正在尝试在正文完成之前在我的博客页脚中加载托管在Google上的JQuery。这是我在functions.php文件中使用的函数。

function load_jquery() {
if (!is_admin()) {
    wp_deregister_script('jquery');
    // load the Google API copy in the footer
    wp_register_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js', array(), '1.5.1', 1);
    wp_enqueue_script('jquery');
}
}
add_action('init', 'load_jquery');

然而,它一直被加载到标题中。我无法弄清楚原因。

我还在functions.php文件中添加了以下函数,它工作正常;

function your_function() {
    echo '<p>This is inserted at the bottom</p>';
}
add_action('wp_footer', 'your_function');

感谢帮助。

6 个答案:

答案 0 :(得分:5)

我怀疑依赖于jquery的其他脚本之一未设置为在页脚中加载。由于脚本依赖于jquery,因此jquery将被加载到头部。

答案 1 :(得分:3)

这对我有用

function add_scripts() {
        wp_deregister_script('jquery');
        wp_register_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js', false, '1.4.2', true);
        wp_enqueue_script( 'jquery' );
}
add_action('wp_enqueue_scripts', 'add_scripts');

答案 2 :(得分:1)

wp_enqueue_script函数中有标记:

wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );

如果要在页脚中加载脚本,可以指定。看一下文档:http://codex.wordpress.org/Function_Reference/wp_enqueue_script

答案 3 :(得分:0)

首先,你应该使用

add_action('wp_enqueue_scripts', 'add_scripts');

如Unknown_Guy所述。

其次,只为需要jQuery的页面(在您的情况下为非管理页面)加载它,然后将wp_enqueue_script('jquery')行移动到仅在呈现用户页面时运行的函数。

在我们的插件中,我们只在呈现短代码的函数中调用wp_enqueue_script('jquery')。这样jQuery只在短代码渲染发生时加载,这就是我们需要的时候。这不会加载到我们的短代码未使用的管理页面或页面上。

答案 4 :(得分:0)

可能有一个未定义的函数在wp_footer()函数之前被触发。

根据我的情况:

我的模板文件中有buddypress功能,但我已停用了buddypress插件,因此功能不起作用。为了解决问题,我在所有的buddressress函数之前添加了if function exists

像这样;之前:

<li class="show_notification_number"><?php
               bp_core_get_notifications_for_user();
                ?></li>
.
.
.
wp_footer();
.
.
.

后:

<li class="show_notification_number"><?php 
               if( function_exists( 'bp_core_get_notifications_for_user' ) ) {
                  bp_core_get_notifications_for_user();
                  } ?>
</li>
.
.
.
wp_footer();
.
.
.

我为所有未定义的(甚至是所有)函数添加了function exists

答案 5 :(得分:-1)

你的错误是在wp_register_script()的最后一个参数中你传递了 1

如果您阅读有关wordpress的文档,则最后一个参数是布尔值,因此您应该传递truefalse而不是 1 0