Pierre,
Cách tôi xử lý việc này là với wp_enqueue_script
và wp_dequeue_script
, và sử dụng một biến thể hiện $is_active
trong lớp Your_Widget
Vì vậy, làm wp_enqueue_script
dựa trên is_active_widget
đó bao gồm kịch bản lệnh trên tất cả các trang nhưng với tham số chân trang được đặt thành đúng. Lưu ý rằng dequeue được chạy ở mức ưu tiên để đảm bảo nó chạy trước khi các tập lệnh được xuất ra.
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 );
}
}
Sau đó, trong chức năng widget cho biết nếu widget đang hoạt động trên trang đó
function widget( $args, $instance ) {
// outputs the content of the widget
$this->is_active = true;
}
Sau đó, trong phần chân trang sẽ xử lý tập lệnh nếu tiện ích không hoạt động trên trang đó
function dequeue_redundant_scripts() {
if (! $this->is_active) {
wp_dequeue_script('your-script-handle');
}
}
Cách tiếp cận này của enqueue sau đó dequeueing nếu không được sử dụng cũng hoạt động tốt cho các plugin xác định mã ngắn yêu cầu tập lệnh