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.

Источник: misha.blog

Миша Рудрастых

Путешествует по миру и рассказывает всем о WordPress лично, у себя в блогах и на курсах в Санкт-Петербурге. Умеет просто объяснять сложные вещи, делает это красиво. Организовывает неплохие WordCamp's, но совсем не умеет слушать чужие доклады.

Добавить комментарий

%d такие блоггеры, как: