我无法让wp_enqueue函数正常工作。我已经查看了它上面的所有文档,但我很难筛选并找出应该去哪里。
到目前为止,据我所知,我应该从我正在创建的主题的functions.php文件中注册和排队文件。这正是我的所作所为。我创建了一些PHP标记并将其放在页面底部的中间。保存并上传。
当我重新加载时,它只返回一个空白的白色屏幕,必须是代码中的错误或其他东西。
这是功能:
<?php
function add_scripts(){
wp_register_script('jquery', 'http://code.jquery.com/jquery-1.5.2.min.js');
wp_register_script('nivo', get_bloginfo('url').'/scripts/nivo.js');
wp_register_script('slimbox',get_bloginfo('url').'/scripts/slimbox2.js');
wp_register_script('picasa', get_bloginfo('url').'/scripts/jquery.EmbedPicasaGallery.js');
wp_register_script('pwi',get_bloginfo('url').'/jquery.pwi-min.js');
wp_register_script('swf', get_bloginfo('url').'/jquery.swfobject.1-1-1.min.js');
wp_register_script('simpletube',get_bloginfo('url').'/scripts/jquery.simpletube.js');
wp_register_script('jqvalidate', get_bloginfo('url').'/jquery.jqvalidate.js');
wp_enqueue_script('jquery');
wp_enqueue_script('nivo');
wp_enqueue_script('slimbox');
wp_enqueue_script('picasa');
wp_enqueue_script('pwi')
wp_enqueue_script('swf');
wp_enqueue_script('simpletube')
wp_enqueue_script('jqvalidate');
}
add_action('init','add_scripts');
?>
我的语法是否存在某种问题?我对PHP并不那么强大。 任何帮助是极大的赞赏。谢谢!
答案 0 :(得分:2)
在没有看到整个文件的情况下调试它有点难,但是你得到一个“空白页面”的事实表明肯定存在比某处语法问题更大的东西。
你肯定有正确嵌套的php标签吗?即。
<?php
some code
<?php
some more code
?>
some more code
?>
会给你带来麻烦。
此外,现在通常的做法是将最后?>
保留在文件的末尾(这意味着在结束标记之后没有任何问题,并且没有必要)
最重要的是,你已经使用了wp_register_script('jquery'...)
- WordPress已经注册了jquery。如果您想重新注册,则需要先wp_deregister_script('jquery')
。我也只是在管理员的外,所以:
if(!is_admin()){wp_deregister_script('jquery'); <your wp_register_script stuff> }
如果这些内容无效,请复制并粘贴整个functions.php
文件(使用pastebin.com并提供链接)
顺便说一下,你多次使用get_bloginfo('url')
- 这意味着你正在运行大量不必要的数据库调用。把它贴在一个变量中,节省一点开销:
$my_url = get_bloginfo('wpurl');
wp_register_script('thing', $my_url.'/script/location/file.js');
哦!还有一件事,我不认为url
是get_bloginfo()
的允许参数我想你想要wpurl
答案 1 :(得分:1)
以下两行缺少;
:
wp_enqueue_script('pwi')
wp_enqueue_script('simpletube')
答案 2 :(得分:0)
我将使用:
代替您的代码<?php
function add_scripts(){
wp_enqueue_script('jquery', 'http://code.jquery.com/jquery-1.5.2.min.js');
wp_enqueue_script('nivo', get_bloginfo('url').'/scripts/nivo.js');
wp_enqueue_script('slimbox',get_bloginfo('url').'/scripts/slimbox2.js');
wp_enqueue_script('picasa', get_bloginfo('url').'/scripts/jquery.EmbedPicasaGallery.js');
wp_enqueue_script('pwi',get_bloginfo('url').'/jquery.pwi-min.js');
wp_enqueue_script('swf', get_bloginfo('url').'/jquery.swfobject.1-1-1.min.js');
wp_enqueue_script('simpletube',get_bloginfo('url').'/scripts/jquery.simpletube.js');
wp_enqueue_script('jqvalidate', get_bloginfo('url').'/jquery.jqvalidate.js');
}
add_action('wp_enqueue_scripts', 'add_scripts');
所以请注意我已经删除了“wp_register_script”,因为如果你要在注册后立即调用wp_enqueue,这是完全没必要的。
wp_register_script
使用这样你以后可以在代码中调用它而不包括路径。
同样重大的变化是我没有从
调用函数init
但我是从
调用的wp_enqueue_scripts
另外请考虑在wp_enqueue_script中添加其他参数,例如
wp_enqueue_script( string $handle, string $src = '', array $deps = array(), string|bool|null $ver = false, bool $in_footer = false )