The dynamic_sidebar_after WordPress PHP action fires after widgets are rendered in a dynamic sidebar.
Usage
add_action('dynamic_sidebar_after', '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 is true.
More information
See WordPress Developer Resources: dynamic_sidebar_after
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 after a specific sidebar
add_action('dynamic_sidebar_after', 'add_custom_message', 10, 2);
function add_custom_message($index, $has_widgets) {
if ($index == 'sidebar-1' && $has_widgets) {
echo '<p>**Thanks for visiting our sidebar!**</p>';
}
}
Add custom CSS class to body for sidebars with widgets
add_filter('body_class', 'add_sidebar_body_class');
function add_sidebar_body_class($classes) {
if (is_active_sidebar('sidebar-1')) {
$classes[] = 'has-sidebar';
}
return $classes;
}
Display a message when no widgets are in the sidebar
add_action('dynamic_sidebar_after', 'display_no_widgets_message', 10, 2);
function display_no_widgets_message($index, $has_widgets) {
if (!$has_widgets) {
echo '<p>**No widgets are currently active in this sidebar.**</p>';
}
}
Add a custom wrapper after a specific sidebar
add_action('dynamic_sidebar_after', 'add_custom_wrapper', 10, 2);
function add_custom_wrapper($index, $has_widgets) {
if ($index == 'footer-sidebar') {
echo '</div> <!-- Close custom wrapper -->';
}
}
Add custom tracking code after all sidebars
add_action('dynamic_sidebar_after', 'add_tracking_code', 10, 2);
function add_tracking_code($index, $has_widgets) {
if ($has_widgets) {
echo '<!-- Custom tracking code goes here -->';
}
}