2015-04-12 30 views
1

我一直在为WordPress创建一个插件,该代码在激活时向侧栏添加代码片段。WP_Enqueue_Script在页脚,非边栏中加载

到目前为止,脚本在加载页面时起作用,但它显示在页面的页脚而不是侧栏中。

我该更改哪些代码才能使代码显示在侧栏而不是页脚?

/** 
* 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'); 

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



} 

https://github.com/ModMarc/WordPress-Humanity-Box-Widget/blob/master/Widget.php

回答

1

wp_enqueue_script负载的js文件不管是在页眉或页脚,从来没有在侧边栏或其他任何地方。

当脚本在wp_enqueue_scripts操作被触发后入队时,它总是加载到页脚中。

wp_enqueue_scripts文档:

3.3版本,功能可以被称为中间页(在wp_footer()模板标签之前),或者使用wp_head行动挂钩。这会将脚本放置在页脚中,就好像$ in_footer参数设置为true一样。

如果您想要一个排在头部的脚本,您必须将排队函数附加到wp_enqueue_scripts操作。

add_action('wp_enqueue_scripts', function() { 
    wp_enqueue_script('external-script'); 
}); 

这不能在你的widget的方法来进行,因为这一行动已经由小工具呈现的时候已经被解雇。

如果您希望将脚本加载到侧边栏中,则必须手动输出script标记。

echo '<script src="' . esc_url($your_script_url) . '"></script>';