Pierre,
Il modo di gestire questo è con wp_enqueue_scripte wp_dequeue_script, e utilizzare una variabile un'istanza $is_activedella classe Your_Widget
Lo stesso vale per la wp_enqueue_scriptbase is_active_widgetche accoda lo script su tutte le pagine ma con il parametro footer impostato su true. Si noti che il dequeue viene eseguito con priorità per assicurarsi che venga eseguito prima che vengano emessi gli script.
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 );
}
}
Quindi nella funzione widget indicare se il widget è attivo su quella pagina
function widget( $args, $instance ) {
// outputs the content of the widget
$this->is_active = true;
}
Quindi nel piè di pagina dequeue lo script se il widget non è attivo su quella pagina
function dequeue_redundant_scripts() {
if (! $this->is_active) {
wp_dequeue_script('your-script-handle');
}
}
Questo approccio di accodamento quindi di dequeue se non utilizzato funziona bene anche per i plugin che definiscono codici brevi che richiedono script