WP_ENQUEUE_SCRIPT顺序-外部与内联js

时间:2011-08-31 作者:Wordpressor

我有几个脚本加载了我的主题:

    // loading script.js
    <script type="text/javascript" src="script.js"></script> 

    // doing something using script.js
    <script type="text/javascript"> 
       script-var: <?php echo get_option(\'script1-var\');?>
    </script>
他们工作得很好,但当我这样做的时候wp_enqueue_script 而不是<script src=""> 脚本在内嵌js内容后加载,因此:

     // enqueuing script.js
     wp_enqueue_script(\'script-js\', get_template_directory_uri() ."/scripts/script.js");       

     // doing something using script.js
     <script type="text/javascript"> 
        script-var: <?php echo get_option(\'script1-var\');?>
     </script>
提供:

  <script type="text/javascript"> 
       script-var: <?php echo get_option(\'script1-var\');?>
  </script>

   <!-- EVERYTHING ABOVE THIS LINE IS USELESS SINCE THE SCRIPT LOADS AFTER, NOT BEFORE, IT -->
  <script type=\'text/javascript\' src=\'http://address/scripts/script.js?ver=3.2.1\'></script>
如何避免这种情况?我知道我可以将内联脚本放入不同的文件并将它们排队,但这绝对没有意义,因为其中有很多PHP函数。

1 个回复
最合适的回答,由SO网友:Milo 整理而成

当您将脚本排入队列时,它们将使用wp_head(), 因此,如果您希望内联脚本位于后面,请将它们置于后面wp_head().

然而,如果您将脚本内联只是为了添加一些php,那么更好的方法是将其排队并使用wp_localize_script 从php中设置所需的任何js变量。

结束

相关推荐

Changing Plugin Load Order

我正在编写一个插件,bar,它依赖于另一个被激活的插件,foo,我需要加载来自foo的函数。通常插件是根据目录名按字母顺序加载的,因此在加载之前先加载bar。如果我将bar目录重命名为zbar,那么它会最后加载并正常工作,但我正在寻找一个更优雅和正确的解决方案。我跟踪了jsdalton\'s method of altering the active_plugins option, 它正在对数组进行重新排序,以将bar放在末尾,但在实例化时,bar仍然无法访问foo的函数。我已经阅读了相关的核心代码——基