php WP_Enqueue_Script加载在页脚,而不是侧边栏

y1aodyip  于 2023-06-28  发布在  PHP
关注(0)|答案(1)|浏览(106)

我一直致力于为WordPress创建一个插件,在激活时向侧边栏添加一段代码。
到目前为止,脚本在页面加载时工作,但它显示在页面的页脚而不是侧边栏中。
我应该做些什么来使代码显示在边栏而不是页脚?

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

}
vyswwuz2

vyswwuz21#

wp_enqueue_script会在页眉或页脚加载js文件,而不会在侧边栏或其他任何地方加载。
当一个脚本在wp_enqueue_scripts动作被触发后入队时,它总是被加载到页脚中。
来自wp_enqueue_scripts文档:
从3.3版开始,可以在页面中间(在wp_footer()模板标记之前)或使用wp_head动作钩子调用该函数。这将把脚本放在页脚中,就像$in_footer参数设置为true一样。
如果你想让一个脚本在头部排队,你必须将你的enqueue函数附加到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>';

相关问题