在页脚中加载Java脚本时出现问题

时间:2015-05-06 作者:Vikram

我已经编写了一个小插件,其中加载了以下脚本

wp_enqueue_script(\'jquery\', plugins_url(\'/js/jquery.min.js\', __FILE__),\'\',\'1.7\',true);
wp_enqueue_script(\'new-cycle\', plugins_url(\'/js/cycle.js\', __FILE__),array( \'jquery\' ),\'1.0\',true);
wp_enqueue_script(\'new-jcarousellite\', plugins_url(\'/js/jcarousellite.js\', __FILE__),array( \'jquery\' ),\'1.0\',true);
wp_enqueue_script(\'new-fancybox\', plugins_url(\'/js/fancybox.js\', __FILE__),array( \'jquery\' ),\'1.0\',true);
我还有一个javascript代码来调用cycle和fancybox函数(从选项和post_元表加载参数/选项)

function front_js(){ ?>   
<script>
    $(document).ready(function(){
      $(".video-popup").fancybox();
      $(".video_msgs").cycle({speed:\'<?php echo get_option("cycle_speed");?>\'});
    });
    </script>
<?php }
此代码通过使用添加到页脚add_action(\'wp_footer\', \'front_js\');

现在,我的javascript代码在所有所需脚本之前加载,如

<script>
$(document).ready(function(){
  $(".video-popup").fancybox();
  $(".video_msgs").cycle();
});
</script>
<script type=\'text/javascript\' src=\'http://localhost/wordpress/wp-content/themes/twentyfifteen/js/functions.js?ver=20141212\'></script>
<script type=\'text/javascript\' src=\'http://localhost/wordpress/wp-content/plugins/myplugin/js/cycle.js?ver=1.0\'></script>
<script type=\'text/javascript\' src=\'http://localhost/wordpress/wp-content/plugins/myplugin/js/jcarousellite.js?ver=1.0\'></script>
<script type=\'text/javascript\' src=\'http://localhost/wordpress/wp-content/plugins/myplugin/js/fancybox.js?ver=1.0\'></script>
<script type=\'text/javascript\' src=\'http://localhost/wordpress/wp-content/plugins/myplugin/js/counter.js?ver=1.0\'></script>
和给出错误$(\'...\').fancybox() 不是函数

我认为这是因为代码是在fancybox之前加载的。编写此函数的js文件。我尝试打印\\u脚本函数,但建议不要使用此函数,并且wp_enqueue_script 仅适用于不使用自定义javascript代码的文件。

是否有任何方法在加载所需文件后加载我的自定义代码,或者有任何其他方法来解决此类问题。

如果我加载头中的所有文件,它就会工作,但这样会增加页面加载时间,这也是一种不好的方法。

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

尝试使用将代码添加到页脚add_action(\'wp_footer\', \'front_js\', 99); 其中99指定函数的执行顺序。现在,它应该在加载脚本后执行。

SO网友:Abhishek Deshpande

而不是将代码放入函数并将其挂接到wp_footer.

您可以将另一个JS文件存储在插件文件夹中,并像其他脚本一样将其排队。

<?php
function front_js() {
  if ( wp_script_is( \'jquery\', \'done\' ) ) {
?>
<script type="text/javascript">

$(document).ready(function(){
      $(".video-popup").fancybox();
      $(".video_msgs").cycle();
    });

</script>
<?php
  }
}
add_action( \'wp_footer\', \'front_js\' );
?> 

结束