WordPress как на ладони
wordpress jino

is_dynamic_sidebar() WP 2.2

Проверяет поддерживается ли темой функция сайдбаров (виджеты и панели для них) и установлен ли для панели хотя бы один виджет. Условный тег.

is_dynamic_sidebar() проверяет зарегистрирована ли хоть одна панель виджетов (сайдбар) для темы и добавлен ли в зарегистрированную панель хотя бы один виджет.

Чтобы проверить наличие виджетов в нужной панели виджетов, используйте функцию is_active_sidebar().

Хуков нет.

Возвращает

Логические 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 } ?>

Заметки

Чтобы проверить наличие сайдбаров в коде плагина, когда нужно подключить виджет к теме, только если есть хоть один сайдбар, то возможно нужно будет проставить приоритет на хук widgets_init, потому что если не ставить приоритет, то ваша функция может сработать быстрее, чем хотя бы один сайдбар будет зарегистирован:

add_action('widgets_init', 'widget_init_my_widget', 999);

Код is dynamic sidebar: wp-includes/widgets.php VER 4.9.1

<?php
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;
}

Cвязанные функции

Из метки: sidebar (widget Виджет)

Еще из метки: Условные теги (все)

is_dynamic_sidebar Комментариев нет

Здравствуйте, !

Ваш комментарий