is_dynamic_sidebar()
Проверяет поддерживается ли темой функция сайдбаров (виджеты и панели для них) и установлен ли для панели хотя бы один виджет. Условный тег.
is_dynamic_sidebar() проверяет зарегистрирована ли хоть одна панель виджетов (сайдбар) для темы и добавлен ли в зарегистрированную панель хотя бы один виджет.
Чтобы проверить наличие виджетов в нужной панели виджетов, используйте функцию is_active_sidebar().
Хуков нет.
Возвращает
true|false
. Логические true или false.
Использование
is_dynamic_sidebar();
Примеры
#1 Проверим наличие виджетов.
Выведем текст, если тема поддерживает виджеты:
if ( is_active_sidebar( 'left-sidebar' ) ) : <ul id="sidebar"> <?php dynamic_sidebar( 'left-sidebar' ); ?> </ul> <?php endif; ?> <?php if( is_dynamic_sidebar() ){ // Тема поддерживает виджеты и хотя бы один виджет установлен // для панели виджетов. Выведем его: ?> <ul id="sidebar"> <?php dynamic_sidebar(); ?> </ul> <?php } ?>
#2 Проверка наличия сайдбара
Чтобы проверить наличие сайдбаров в коде плагина, когда нужно подключить виджет к теме, только если есть хоть один сайдбар, то возможно нужно будет проставить приоритет на хук widgets_init, потому что если не ставить приоритет, то ваша функция может сработать быстрее, чем хотя бы один сайдбар будет зарегистирован:
add_action('widgets_init', 'widget_init_my_widget', 999);
Заметки
- Global. Массив. $wp_registered_widgets The registered widgets.
- Global. Массив. $wp_registered_sidebars The registered sidebars.
Список изменений
С версии 2.2.0 | Введена. |
Код is_dynamic_sidebar() is dynamic sidebar WP 6.7.1
function is_dynamic_sidebar() { global $wp_registered_widgets, $wp_registered_sidebars; $sidebars_widgets = get_option( 'sidebars_widgets' ); foreach ( (array) $wp_registered_sidebars as $index => $sidebar ) { if ( ! empty( $sidebars_widgets[ $index ] ) ) { foreach ( (array) $sidebars_widgets[ $index ] as $widget ) { if ( array_key_exists( $widget, $wp_registered_widgets ) ) { return true; } } } } return false; }