Pierre,
Ich gehe damit mit wp_enqueue_scriptund um wp_dequeue_scriptund verwende eine Instanzvariable $is_activein der Your_Widget-Klasse
Tun Sie dies auch, wp_enqueue_scriptbasierend darauf, is_active_widgetwelches Skript das Skript auf allen Seiten in die Warteschlange stellt, wobei der Fußzeilenparameter auf true gesetzt ist. Beachten Sie, dass die Warteschlange mit einer Priorität ausgeführt wird, um sicherzustellen, dass sie ausgeführt wird, bevor die Skripts ausgegeben werden.
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 );
}
}}
Geben Sie dann in der Widget-Funktion an, ob das Widget auf dieser Seite aktiv ist
function widget( $args, $instance ) {
// outputs the content of the widget
$this->is_active = true;
}
Deaktivieren Sie dann in der Fußzeile das Skript, wenn das Widget auf dieser Seite nicht aktiv ist
function dequeue_redundant_scripts() {
if (! $this->is_active) {
wp_dequeue_script('your-script-handle');
}
}
Dieser Ansatz, bei Nichtverwendung in die Warteschlange zu stellen und dann in die Warteschlange zu stellen, funktioniert auch gut für Plugins, die Shortcodes definieren, für die Skripte erforderlich sind