Pierre,
Ich gehe damit mit wp_enqueue_script
und um wp_dequeue_script
und verwende eine Instanzvariable $is_active
in der Your_Widget-Klasse
Tun Sie dies auch, wp_enqueue_script
basierend darauf, is_active_widget
welches 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