The dynamic_sidebar_before WordPress PHP action fires before widgets are rendered in a dynamic sidebar.
Usage
add_action('dynamic_sidebar_before', 'your_custom_function', 10, 2);
function your_custom_function($index, $has_widgets) {
// your custom code here
}
Parameters
$index(int|string) – Index, name, or ID of the dynamic sidebar.$has_widgets(bool) – Whether the sidebar is populated with widgets. Default true.
More information
See WordPress Developer Resources: dynamic_sidebar_before
Note: The action also fires for empty sidebars, and on both the front end and back end, including the Inactive Widgets sidebar on the Widgets screen.
Examples
Add a custom message before the sidebar
Add a custom message before the sidebar if it has widgets:
add_action('dynamic_sidebar_before', 'add_custom_message', 10, 2);
function add_custom_message($index, $has_widgets) {
if ($has_widgets) {
echo '<p><strong>Welcome to our sidebar!</strong></p>';
}
}
Display a specific message for an empty sidebar
Display a custom message when the sidebar is empty:
add_action('dynamic_sidebar_before', 'empty_sidebar_message', 10, 2);
function empty_sidebar_message($index, $has_widgets) {
if (!$has_widgets) {
echo '<p><em>This sidebar is empty. Please add some widgets.</em></p>';
}
}
Add a custom class to the sidebar wrapper
Add a custom class to the sidebar wrapper based on the sidebar index:
add_action('dynamic_sidebar_before', 'add_sidebar_class', 10, 2);
function add_sidebar_class($index, $has_widgets) {
echo '<div class="sidebar-' . esc_attr($index) . '">';
}
Display a login form before the sidebar
Display a login form before the sidebar only for logged-out users:
add_action('dynamic_sidebar_before', 'display_login_form', 10, 2);
function display_login_form($index, $has_widgets) {
if (!is_user_logged_in()) {
wp_login_form();
}
}
Display a custom banner ad before the sidebar
Display a custom banner ad before the sidebar only if it has widgets:
add_action('dynamic_sidebar_before', 'display_banner_ad', 10, 2);
function display_banner_ad($index, $has_widgets) {
if ($has_widgets) {
echo '<div class="banner-ad">';
echo '<img src="your-banner-ad-url.jpg" alt="Banner Ad">';
echo '</div>';
}
}