That action is just there in case a plugin or theme wants to do something before sidebars are rendered. The code you’re looking for is in widgets.php
, just before and just after that action:
$callback = $wp_registered_widgets[$id]['callback'];
do_action( 'dynamic_sidebar', $wp_registered_widgets[$id] );
if ( is_callable($callback) ) {
call_user_func_array($callback, $params);
$did_one = true;
}
In the wp_register_sidebar_widget() function, you can see where $wp_registered_widgets[$id]
gets set to an array of information about the widget, including the display/output callback:
$widget = array(
'name' => $name,
'id' => $id,
'callback' => $output_callback,
'params' => array_slice(func_get_args(), 4)
);
$widget = array_merge($widget, $options);
if ( is_callable($output_callback) && ( !isset($wp_registered_widgets[$id]) || did_action( 'widgets_init' ) ) ) {
do_action( 'wp_register_sidebar_widget', $widget );
$wp_registered_widgets[$id] = $widget;
}