Wordpress Enqueue Js脚本

时间:2011-05-09 19:07:04

标签: php javascript wordpress

我无法让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并不那么强大。 任何帮助是极大的赞赏。谢谢!

3 个答案:

答案 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');

哦!还有一件事,我不认为urlget_bloginfo()的允许参数我想你想要wpurl

Codex page on get_bloginfo() function

祝你好运!

答案 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 )