Pierre,
Il modo di gestire questo è con wp_enqueue_script
e wp_dequeue_script
, e utilizzare una variabile un'istanza $is_active
della classe Your_Widget
Lo stesso vale per la wp_enqueue_script
base is_active_widget
che 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