Pierre,
A maneira como lida com isso é com wp_enqueue_script
and wp_dequeue_script
, e use uma variável de instância $is_active
na classe Your_Widget
Então, fazer a wp_enqueue_script
base em is_active_widget
que enfileira o script em todas as páginas, mas com o conjunto de parâmetros de rodapé para true. Observe que a desenfileiramento é executada com prioridade para garantir que seja executada antes da saída dos scripts.
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 );
}
}
Em seguida, na função do widget, indique se o widget está ativo nessa página
function widget( $args, $instance ) {
// outputs the content of the widget
$this->is_active = true;
}
Em seguida, no rodapé, desenfileire o script se o widget não estiver ativo nessa página
function dequeue_redundant_scripts() {
if (! $this->is_active) {
wp_dequeue_script('your-script-handle');
}
}
Essa abordagem de enfileirar e desenfileirar se não for usada também funciona bem para plug-ins que definem códigos de acesso que requerem scripts