is_active_widget() — проверяет, добавлен ли виджет в сайдбар

Условный тег, проверяет, отображается ли виджет во сайте, если да — возвращает ID сайдбара, в котором он отображается, если нет, возвращает false.

Для того, чтобы эта функция правильно работала, она должна быть запущена после инициализации виджетов.

is_active_widget($callback = false, $widget_id = false, $id_base = false, $skip_inactive = true)
$callback
(строка) в качестве условия проверки мы можем установить обратную функцию (класс) виджета. Если на сайте задействовано несколько однотипных виджетов, тогда используйте ID виджета для проверки.
$widget_id
(целое число) ID виджета, который нужно проверить. Этот параметр нужен на случай, если у вас на сайте может быть подключено несколько однотипных виджетов, а проверить нужно только один. ID можно узнать в исходном HTML коде страницы.

class trueCustomWidget extends WP_Widget {
	function __construct() {
		parent::__construct(
			'true_custom_widget', 
			'Мой произвольный виджет',
			array( 'description' => 'Описание виджета.' )
		);
		add_action('wp_enqueue_scripts', array(&$this, 'js'));
	}
 
	...
 
	function js(){
		if ( is_active_widget(false, 'my_custom_widget-3', $this->id_base, true) ) {
			wp_enqueue_script('my-custom-script');
		} 
	}
}
$id_base
(строка) базовый ID виджета, т.е. ID без цифр, например search (виджет формы поиска), recent-posts (виджет свежих записей), nav_menu (виджет произвольных меню), my-custom-widget (какой-нибудь произвольный виджет, созданный вами) и так далее. Этот ID легко вычисляется в исходном коде на странице виджетов или, если виджет добавлен, его можно посмотреть прямо на сайте.

// предположим, что у меня есть какой-то скрипт, который реализует самозаполнение формы поиска
function true_check_widget() {
	if( is_active_widget( '', '', 'search' ) ) { // проверяем, если виджет поисковой формы активен
		wp_enqueue_script('my-custom-autocomplete-search'); // это к примеру
	}
}
 
add_action( 'init', 'true_check_widget' );

Пример использования этого параметра внутри класса:

class trueCustomWidget extends WP_Widget {
	function __construct() {
		parent::__construct(
			'true_custom_widget', 
			'Мой произвольный виджет',
			array( 'description' => 'Описание виджета.' )
		);
		if ( is_active_widget(false, false, $this->id_base, true) ) {
			wp_enqueue_script('my-custom-script');
		} 
	}
 
	...
 
}
$skip_inactive
(логическое) нужно ли включить в проверку виджеты из wp_inactive_widgets.

Оставить комментарий / вопрос

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • Владимир: и на третьей строке не хватает скобки ) закрывающей if :)

  • Миша: Добрый вечер! Рекомендую получить ID пользователя через функцию get_current_user_id().

  • Дмитрий: Миша, подскажите пожалуйста, я использую такой редирект, но он не срабатывает: add_action( 'template_redirect', funct...

  • Миша: Ну как не определена - это аргумент функции. Или я просто вас не до конца понимаю.

  • Артем: Ага, понял. Вот только почему $args? Она же нигде не определена, по логике должна быть переменная $true_field_params или...