Using WordPress ‘dynamic_sidebar()’ PHP function

The dynamic_sidebar() WordPress PHP function displays a dynamic sidebar. The default behavior is to show the ‘sidebar-1’ unless an ID, name, or numerical index is specified for the sidebar.

Usage

Here’s a common way to use the function:

if (is_active_sidebar('left-sidebar')) {
    echo '<ul id="sidebar">';
    dynamic_sidebar('left-sidebar');
    echo '</ul>';
}

Parameters

  • $index (int|string, Optional): This parameter is used to specify the index, name, or ID of the dynamic sidebar. The default value is 1.

More information

See WordPress Developer Resources: dynamic_sidebar()
This function is often used as a callback when there’s no sidebar.php file to query, or when using sidebars that might not have a template. It’s also useful for rendering dynamic sidebars that may have been generated in the theme’s register_sidebar(array($arguments)) function.

Examples

Display Right Sidebar

Here’s how you can display a right sidebar:

echo '<ul id="sidebar">';
dynamic_sidebar('right-sidebar');
echo '</ul>';

Display Default Sidebar with Fallback

Display the default sidebar with a static fallback when no sidebar is active:

echo '<ul id="sidebar">';
if (!dynamic_sidebar()) {
    echo '<li>{static sidebar item 1}</li>';
    echo '<li>{static sidebar item 2}</li>';
}
echo '</ul>';

Using Conditional Statements

Use PHP conditional statements to safely render a dynamic sidebar and provide context if the admin hasn’t assigned a sidebar to a widget:

echo '<section id="sidebar">';
if (is_active_sidebar('sidebar')) {
    dynamic_sidebar('sidebar');
} else {
    echo '<div class="meta-default">';
    the_widget('WP_Widget_Categories', '', '');
    get_search_form();
    echo '<nav class="sidebar-login">';
    echo '<ul>';
    wp_loginout();
    echo '</ul></nav></div>';
}
echo '</section>';

Displaying a Sidebar with a Specified Numerical Index

To display a sidebar with a specified numerical index, you can do:

dynamic_sidebar(2);  // Displays the second registered sidebar

Checking if a Sidebar is Active Before Displaying

Before displaying a sidebar, it’s a good practice to check if it’s active:

if (is_active_sidebar('my_sidebar')) {
    dynamic_sidebar('my_sidebar');
}

This helps to prevent empty div sections on the page which might create empty space or broken alignment of page view.