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 Registered widgets.
- Global. Масив. $wp_registered_sidebars Registered sidebars.
список змін
| З версії 2.2.0 | Введено. |
Код is_dynamic_sidebar() is dynamic sidebar WP 6.0.2
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;
}