Intereting Posts
Multisite – отображение другого содержимого заголовка на основе доступа к сайту Как использовать подстановочные знаки в $ wpdb-запросах с помощью $ wpdb-> get_results & $ wpdb-> prepare? Как я могу сделать (wp_nav_menu) для этой конструкции? (Целевая страница с разными разделами) Проблема с кодировкой load-scripts.php WordPress Добавить меню типа сообщения в другое меню Каков официальный способ использования WordPress API? (api.wordpress.org) Избранное изображение не будет отображаться на странице «Объявления» add_filter to_content из функции плагина Как создать короткий код для автоматического входа в систему после регистрации Как настроить плагины? не может добавлять новые пункты меню в экран структуры меню wordpress 4.2.4 Breadcrumbs: результат поиска не отображается, если статическая страница находится сверху. проблемы с боковой панелью, проблемы таксономии Заблокировать файлы JavaScript из загрузки Dequeue скрипты и стили только для определенного типа пользовательских сообщений

Скрипт регистрации в подключаемом виджете

Мне нужно загрузить отдельный файл js в виджет и просто не могу заставить его работать. До сих пор

if ( is_active_widget( false, false, $this->id_base, true ) ) { function tab_widget_scripts() { wp_register_script( 'tabs', plugins_url( 'tabs.js', __FILE__ ), array(), false, true ); wp_enqueue_script( 'tabs.js' ); } } 

в моей function __construct() а затем

 do_action( 'wp_print_footer_scripts', 'tab_widget_scripts' ); 

внутри public function widget( $args, $instance ) . Может ли кто-нибудь сказать мне, что я делаю неправильно?

Есть 3 вопроса.

Во-первых, вы вызываете do_action , вызывая действие:

 do_action( 'wp_print_footer_scripts', 'tab_widget_scripts' ); 

Фактически, вы хотите добавить к нему свою функцию, а не запускать ее. Вы должны это делать:

 add_action( 'wp_print_footer_scripts', 'tab_widget_scripts' ); 

Во-вторых, вы регистрируете этот скрипт:

 tabs 

Затем запустив этот скрипт:

 tabs.js 

Ясно, что они не совпадают, так же, как если бы я дал вам ингредиенты для торта, тогда скажите вам сделать латте, это не сработает.

В-третьих, вы определяете функцию только в том случае, если виджет отображается во внешнем интерфейсе. Это немного странно, вместо этого вы должны использовать add_action в своей функции в своем классе виджетов и всегда определять его, сохраняя ненужный вызов is_active_widget

do_action должно быть add_action – вы добавляете функцию в очередь, а не выполняете все функции, подключенные к действию. Тем не менее, вам не нужно перехватывать отдельную функцию, вы можете просто вставить непосредственно в функцию виджетов, если хотите.