2015-04-12 85 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>';