wp_render_widget

The timeline below displays how wordpress function wp_render_widget has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.5

/**
 * Calls the render callback of a widget and returns the output.
 *
 * @since 5.8.0
 *
 * @global array $wp_registered_widgets  The registered widgets.
 * @global array $wp_registered_sidebars The registered sidebars.
 *
 * @param string $widget_id Widget ID.
 * @param string $sidebar_id Sidebar ID.
 * @return string
 */
function wp_render_widget($widget_id, $sidebar_id)
{
    global $wp_registered_widgets, $wp_registered_sidebars;
    if (!isset($wp_registered_widgets[$widget_id])) {
        return '';
    }
    if (isset($wp_registered_sidebars[$sidebar_id])) {
        $sidebar = $wp_registered_sidebars[$sidebar_id];
    } elseif ('wp_inactive_widgets' === $sidebar_id) {
        $sidebar = array();
    } else {
        return '';
    }
    $params = array_merge(array(array_merge($sidebar, array('widget_id' => $widget_id, 'widget_name' => $wp_registered_widgets[$widget_id]['name']))), (array) $wp_registered_widgets[$widget_id]['params']);
    // Substitute HTML `id` and `class` attributes into `before_widget`.
    $classname_ = '';
    foreach ((array) $wp_registered_widgets[$widget_id]['classname'] as $cn) {
        if (is_string($cn)) {
            $classname_ .= '_' . $cn;
        } elseif (is_object($cn)) {
            $classname_ .= '_' . get_class($cn);
        }
    }
    $classname_ = ltrim($classname_, '_');
    $params[0]['before_widget'] = sprintf($params[0]['before_widget'], $widget_id, $classname_);
    /** This filter is documented in wp-includes/widgets.php */
    $params = apply_filters('dynamic_sidebar_params', $params);
    $callback = $wp_registered_widgets[$widget_id]['callback'];
    ob_start();
    /** This filter is documented in wp-includes/widgets.php */
    do_action('dynamic_sidebar', $wp_registered_widgets[$widget_id]);
    if (is_callable($callback)) {
        call_user_func_array($callback, $params);
    }
    return ob_get_clean();
}

WordPress Version: 5.8

/**
 * Calls the render callback of a widget and returns the output.
 *
 * @since 5.8.0
 *
 * @param string $widget_id Widget ID.
 * @param string $sidebar_id Sidebar ID.
 * @return string
 */
function wp_render_widget($widget_id, $sidebar_id)
{
    global $wp_registered_widgets, $wp_registered_sidebars;
    if (!isset($wp_registered_widgets[$widget_id])) {
        return '';
    }
    if (isset($wp_registered_sidebars[$sidebar_id])) {
        $sidebar = $wp_registered_sidebars[$sidebar_id];
    } elseif ('wp_inactive_widgets' === $sidebar_id) {
        $sidebar = array();
    } else {
        return '';
    }
    $params = array_merge(array(array_merge($sidebar, array('widget_id' => $widget_id, 'widget_name' => $wp_registered_widgets[$widget_id]['name']))), (array) $wp_registered_widgets[$widget_id]['params']);
    // Substitute HTML `id` and `class` attributes into `before_widget`.
    $classname_ = '';
    foreach ((array) $wp_registered_widgets[$widget_id]['classname'] as $cn) {
        if (is_string($cn)) {
            $classname_ .= '_' . $cn;
        } elseif (is_object($cn)) {
            $classname_ .= '_' . get_class($cn);
        }
    }
    $classname_ = ltrim($classname_, '_');
    $params[0]['before_widget'] = sprintf($params[0]['before_widget'], $widget_id, $classname_);
    /** This filter is documented in wp-includes/widgets.php */
    $params = apply_filters('dynamic_sidebar_params', $params);
    $callback = $wp_registered_widgets[$widget_id]['callback'];
    ob_start();
    /** This filter is documented in wp-includes/widgets.php */
    do_action('dynamic_sidebar', $wp_registered_widgets[$widget_id]);
    if (is_callable($callback)) {
        call_user_func_array($callback, $params);
    }
    return ob_get_clean();
}