皮埃尔,
我处理这件事的方式是wp_enqueue_script
和wp_dequeue_script
, 并使用实例变量$is_active
在Your\\u Widget类中
因此wp_enqueue_script
基于is_active_widget
它将脚本列在所有页面上,但footer参数设置为true。请注意,出列是按优先级运行的,以确保它在输出脚本之前运行。
function enqueue_scripts() {
if ( is_active_widget( false, $this->id, $this->id_base, true ) ) {
wp_enqueue_script( \'your-script-handle\', \'your-script-url\', array(), \'1.0\', true );
add_action( \'wp_footer\', array($this,\'dequeue_redundant_scripts\'), 1 );
}
}
然后在窗口小部件功能中指示窗口小部件在该页面上是否处于活动状态
function widget( $args, $instance ) {
// outputs the content of the widget
$this->is_active = true;
}
然后在页脚中,如果小部件在该页面上未处于活动状态,则将脚本出列
function dequeue_redundant_scripts() {
if (! $this->is_active) {
wp_dequeue_script(\'your-script-handle\');
}
}
对于定义需要脚本的短代码的插件来说,这种先排队,然后在未使用时退出的方法也很有效