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