【问题标题】:Wordpress Enqueue Js scriptsWordpress Enqueue Js 脚本
【发布时间】:2017-01-21 15:37:27
【问题描述】:

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

【问题讨论】:

  • 你有两个wp_enqueue_script('picasa');,缺少一个wp_enqueue_script('nivo');
  • 谢谢,不过我认为这不是问题所在。我解决了这个问题,结果还是一样
  • 在下面查看我的答案。您的代码中缺少一些分号 (;)。

标签: php javascript wordpress


【解决方案1】:

在不查看整个文件的情况下调试它有点困难,但你得到一个“空白页”的事实表明,肯定存在比语法问题更大的问题。

你确定有正确嵌套的 php 标签吗?即

<?php

some code

<?php

some more code

?>

some more code

?>

会给你带来麻烦。

此外,现在通常的做法是从文件末尾保留最后一个 ?&gt;(这意味着您不会在结束标签后出现任何问题,而且它们不是必需的)

最重要的是,您已经使用了wp_register_script('jquery'...) - WordPress 已经注册了 jquery。如果您想重新注册,您需要先wp_deregister_script('jquery')。我也只会在管理员之外做,所以:

if(!is_admin()){wp_deregister_script('jquery'); &lt;your wp_register_script stuff&gt; }

如果这些方法没有帮助,请复制并粘贴您的整个 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

祝你好运!

【讨论】:

    【解决方案2】:

    以下两行缺少;

    wp_enqueue_script('pwi')
    wp_enqueue_script('simpletube')
    

    【讨论】:

      【解决方案3】:

      我会用你的代码代替:

      <?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 )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多