Wordpress:仅在使用窗口小部件时才将队列排入队列

时间:2011-08-25 17:27:07

标签: wordpress widget

只有在使用窗口小部件时才有一种方法可以将脚本排入队列(注意,如果是活动的话,请注意,但如果它存在于页面/帖子的侧边栏内)?甚至更好:只有当某个特定字符串出现在侧边栏内时,才有办法将脚本排入队列?

3 个答案:

答案 0 :(得分:9)

只需将小部件功能中的脚本或样式表排入队列即可。这是最简单,最好的方法。

    public function widget( $args, $instance ) {
        // outputs the content of the widget

        // Enqueue a script needed for
        // the Widget's output
        wp_enqueue_script( 'your_script', $path, $deps );

        // Rest of widget output goes here...
    }

答案 1 :(得分:2)

我实际上没有测试过,但是一个可能的解决方案是将脚本排入页脚。

如果使用小部件

构建窗口小部件时,可以向窗口小部件类的widget()函数添加一些代码(实际将窗口小部件输出到屏幕的功能)。您可以从此处just make sure you flag it to be used in the footer致电wp_enqueue_script()

这将打印调用wp_footer()而不是调用wp_head()的脚本,但仅限于在页面上调用窗口小部件。

如果侧栏中出现字符串

基本上,只需过滤字符串的侧边栏即可。如果字符串存在,则将脚本排入页脚,就像使用小部件一样。


(更新)替代方案

您还可以做其他两件事。首先,您可以使用jQuery来命名您的功能。基本上,给你的小部件一个唯一的ID(比如“my-unique-id”),然后异步下载你的脚本:

jQuery(document).ready(function() {
    if( jQuery('#my-unique-id').length > 0 ) {

        jQuery.getScript( [your-script-url] );

    }
}

此代码将检查您的小部件ID是否在页面上...如果是,它会从服务器下载您的脚本,如果没有,它什么都不做。您还可以在PHP中构建此代码,以包含对脚本文件的相对或绝对引用。这取决于你。

或者,您可以将脚本包含在窗口小部件代码中的内联<script>块中。这将以您希望的方式工作,但它会破坏各种标准编码实践。代码通常应位于<header>或直接放在结束</body>标记之前...但您可以将它放在任何您想要的位置。

答案 2 :(得分:2)

我认为'wp_footer'钩子是因为这个钩子是在页脚处执行的,并且可能是仅在使用窗口小部件时添加脚本的最佳方式。

class Your_Widget extends WP_Widget{

    function widget( $args, $instance ) {

         add_action('wp_footer',array($this,'front_end_scripts'));

    }

    function front_end_scripts(){
       ?><script type="text/javascript">
          console.log('this works!');
        /*
          Or if you need external scripts then you may use 
          $.getScript([your-script-url] );
        */
        </script> <?php
    }



}