在页面底部加载小部件脚本

时间:2015-04-08 作者:Marc Woodyard

我一直在开发一个插件,它可以在激活时向侧边栏添加脚本。到目前为止,我已经能够显示代码,但它加载在页面底部,而不是侧边栏中。

我对开发WordPress插件还很陌生,所以如果您能提供更详细的说明,我将不胜感激。

这是Github上代码的链接。

   /**
 * Front-end display of widget.
 *
 * @see WP_Widget::widget()
 *
 * @param array $args     Widget arguments.
 * @param array $instance Saved values from database.
 */


    public function widget( $args, $instance ) {

    echo $args[\'before_widget\'];
    if ( ! empty( $instance[\'title\'] ) ) {
        echo $args[\'before_title\'] . apply_filters( \'widget_title\', $instance[\'title\'] ). $args[\'after_title\'];
        }

      wp_enqueue_script( \'external-script\', \'https://d21djfthp4qopy.cloudfront.net/humanitybox.js\', array( \'jquery\' ), \'1.0.0\', true );



     //echo __( \'Hello, World!\', \'text_domain\' );
     echo $args[\'after_widget\'];



}

1 个回复
SO网友:kovshenin

这是意料之中的行为,因为你在打电话wp_enqueue_script 中间页,所以在这一点上<head> 船已经开航了,唯一的选择是在船尾排队,这很好。

我没有花太多时间阅读您排队的实际脚本,但它似乎正在做一些document.write() 一旦加载,这就是为什么您可能会在页脚中看到输出。

为了解决您的问题,我将重新构建一点脚本,将其转换为接受元素的函数,然后在小部件输出中调用该函数:

<div id="my-widget-id"></div>
<script>
jQuery(document).ready(function($){
    my_function($(\'my-widget-id\'));
});
</script>
这样,脚本将等待您的。js文件加载到页脚中,然后调用其传递小部件ID的函数,希望可以使用该ID将输出插入$.html().

希望有帮助!

结束