is_dynamic_sidebar()
Defines whether the theme supports widgets and whether at least one sidebar has been added to the panel. Conditional tag.
Use this conditional tag in templates to, for example, include a CSS file for widgets only when they are actually active, or to show a placeholder if the user has not added any widgets yet.
Use the function is_active_sidebar() to check for the presence of widgets in the desired widget panel.
No Hooks.
Returns
bool.
true— at least one sidebar contains widgets.false— if there are no sidebars or widgets (even if sidebars are registered).
Usage
is_dynamic_sidebar();
Examples
#1 Output a fallback block if no widget has been added
if ( is_dynamic_sidebar() ) {
get_sidebar(); // standard sidebar
}
else {
echo '<p>Add widgets in the admin panel.</p>';
}
#2 Check the presence of widgets
Display the text if the theme supports widgets:
<?php
if ( is_active_sidebar( 'left-sidebar' ) ) { ?>
<ul id="sidebar">
<?php dynamic_sidebar( 'left-sidebar' ); ?>
</ul>
<?php } ?>
<!-- The theme supports widgets and at least one widget is installed -->
<!-- for the widget panel. Let's display it: -->
<?php if( is_dynamic_sidebar() ){ ?>
<ul id="sidebar">
<?php dynamic_sidebar(); ?>
</ul>
<?php } ?>
#3 Checking for a sidebar
To check the presence of sidebars in the plugin code, when you want to connect a widget to a theme, only if there is at least one sidebar, you might need to put a priority on the hook widgets_init, because if you don't put a priority, your function might work faster than at least one sidebar is registered:
add_action( 'widgets_init', 'widget_init_my_widget', 999 );
Notes
Global. Array. $wp_registered_widgets The registered widgets. |
Global. Array. $wp_registered_sidebars The registered sidebars. |
Changelog
| Since 2.2.0 | Introduced. |
is_dynamic_sidebar() is dynamic sidebar code WP 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;
}