我试图加载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');
感谢您的帮助
我怀疑依赖于jquery的其他脚本之一没有设置为在页脚加载。由于脚本依赖于jquery, jquery将被加载到头部。
这对我有用
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');
wp_enqueue_script
函数中有标志:
wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );
如果你想在页脚加载脚本,你可以指定。查看文档:http://codex.wordpress.org/Function_Reference/wp_enqueue_script
首先,您应该使用
add_action('wp_enqueue_scripts', 'add_scripts');
正如Unknown_Guy所指出的。
其次,只加载需要jQuery的页面(在你的情况下非管理页面),然后移动wp_enqueue_script(' jQuery ')行到一个只在渲染用户页面时运行的函数。
在我们的插件中,我们只在渲染短代码的函数中调用wp_enqueue_script('jquery')。这样,jQuery只在短代码呈现发生时才会加载,这正是我们需要它的时候。这将不会加载在管理页面或页面,我们的短代码不使用可能存在先于wp_footer()
函数触发的未定义函数
对于我的情况:
我有buddypress功能在我的模板文件,但我已经停用buddypress插件,所以功能不工作。为了解决这个问题,我在所有buddypress函数之前添加了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
。
你的错误是在wp_register_script()
的最后一个参数中你传递了1。
如果你在wordpress上阅读文档,最后一个参数是一个布尔值,所以你应该传递true
或false
,而不是1或0