wp_register_sidebar_widget

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

WordPress Version: 6.5

/**
 * Register an instance of a widget.
 *
 * The default widget option is 'classname' that can be overridden.
 *
 * The function can also be used to un-register widgets when `$output_callback`
 * parameter is an empty string.
 *
 * @since 2.2.0
 * @since 5.3.0 Formalized the existing and already documented `...$params` parameter
 *              by adding it to the function signature.
 * @since 5.8.0 Added show_instance_in_rest option.
 *
 * @global array $wp_registered_widgets            Uses stored registered widgets.
 * @global array $wp_registered_widget_controls    Stores the registered widget controls (options).
 * @global array $wp_registered_widget_updates     The registered widget updates.
 * @global array $_wp_deprecated_widgets_callbacks
 *
 * @param int|string $id              Widget ID.
 * @param string     $name            Widget display title.
 * @param callable   $output_callback Run when widget is called.
 * @param array      $options {
 *     Optional. An array of supplementary widget options for the instance.
 *
 *     @type string $classname             Class name for the widget's HTML container. Default is a shortened
 *                                         version of the output callback name.
 *     @type string $description           Widget description for display in the widget administration
 *                                         panel and/or theme.
 *     @type bool   $show_instance_in_rest Whether to show the widget's instance settings in the REST API.
 *                                         Only available for WP_Widget based widgets.
 * }
 * @param mixed      ...$params       Optional additional parameters to pass to the callback function when it's called.
 */
function wp_register_sidebar_widget($id, $name, $output_callback, $options = array(), ...$params)
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_registered_widget_updates, $_wp_deprecated_widgets_callbacks;
    $id = strtolower($id);
    if (empty($output_callback)) {
        unset($wp_registered_widgets[$id]);
        return;
    }
    $id_base = _get_widget_id_base($id);
    if (in_array($output_callback, $_wp_deprecated_widgets_callbacks, true) && !is_callable($output_callback)) {
        unset($wp_registered_widget_controls[$id]);
        unset($wp_registered_widget_updates[$id_base]);
        return;
    }
    $defaults = array('classname' => $output_callback);
    $options = wp_parse_args($options, $defaults);
    $widget = array('name' => $name, 'id' => $id, 'callback' => $output_callback, 'params' => $params);
    $widget = array_merge($widget, $options);
    if (is_callable($output_callback) && (!isset($wp_registered_widgets[$id]) || did_action('widgets_init'))) {
        /**
         * Fires once for each registered widget.
         *
         * @since 3.0.0
         *
         * @param array $widget An array of default widget arguments.
         */
        do_action('wp_register_sidebar_widget', $widget);
        $wp_registered_widgets[$id] = $widget;
    }
}

WordPress Version: 5.8

/**
 * Register an instance of a widget.
 *
 * The default widget option is 'classname' that can be overridden.
 *
 * The function can also be used to un-register widgets when `$output_callback`
 * parameter is an empty string.
 *
 * @since 2.2.0
 * @since 5.3.0 Formalized the existing and already documented `...$params` parameter
 *              by adding it to the function signature.
 * @since 5.8.0 Added show_instance_in_rest option.
 *
 * @global array $wp_registered_widgets            Uses stored registered widgets.
 * @global array $wp_registered_widget_controls    Stores the registered widget controls (options).
 * @global array $wp_registered_widget_updates
 * @global array $_wp_deprecated_widgets_callbacks
 *
 * @param int|string $id              Widget ID.
 * @param string     $name            Widget display title.
 * @param callable   $output_callback Run when widget is called.
 * @param array      $options {
 *     Optional. An array of supplementary widget options for the instance.
 *
 *     @type string $classname             Class name for the widget's HTML container. Default is a shortened
 *                                         version of the output callback name.
 *     @type string $description           Widget description for display in the widget administration
 *                                         panel and/or theme.
 *     @type bool   $show_instance_in_rest Whether to show the widget's instance settings in the REST API.
 *                                         Only available for WP_Widget based widgets.
 * }
 * @param mixed      ...$params       Optional additional parameters to pass to the callback function when it's called.
 */
function wp_register_sidebar_widget($id, $name, $output_callback, $options = array(), ...$params)
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_registered_widget_updates, $_wp_deprecated_widgets_callbacks;
    $id = strtolower($id);
    if (empty($output_callback)) {
        unset($wp_registered_widgets[$id]);
        return;
    }
    $id_base = _get_widget_id_base($id);
    if (in_array($output_callback, $_wp_deprecated_widgets_callbacks, true) && !is_callable($output_callback)) {
        unset($wp_registered_widget_controls[$id]);
        unset($wp_registered_widget_updates[$id_base]);
        return;
    }
    $defaults = array('classname' => $output_callback);
    $options = wp_parse_args($options, $defaults);
    $widget = array('name' => $name, 'id' => $id, 'callback' => $output_callback, 'params' => $params);
    $widget = array_merge($widget, $options);
    if (is_callable($output_callback) && (!isset($wp_registered_widgets[$id]) || did_action('widgets_init'))) {
        /**
         * Fires once for each registered widget.
         *
         * @since 3.0.0
         *
         * @param array $widget An array of default widget arguments.
         */
        do_action('wp_register_sidebar_widget', $widget);
        $wp_registered_widgets[$id] = $widget;
    }
}

WordPress Version: 5.3

/**
 * Register an instance of a widget.
 *
 * The default widget option is 'classname' that can be overridden.
 *
 * The function can also be used to un-register widgets when `$output_callback`
 * parameter is an empty string.
 *
 * @since 2.2.0
 * @since 5.3.0 Formalized the existing and already documented `...$params` parameter
 *              by adding it to the function signature.
 *
 * @global array $wp_registered_widgets            Uses stored registered widgets.
 * @global array $wp_registered_widget_controls    Stores the registered widget controls (options).
 * @global array $wp_registered_widget_updates
 * @global array $_wp_deprecated_widgets_callbacks
 *
 * @param int|string $id              Widget ID.
 * @param string     $name            Widget display title.
 * @param callable   $output_callback Run when widget is called.
 * @param array      $options {
 *     Optional. An array of supplementary widget options for the instance.
 *
 *     @type string $classname   Class name for the widget's HTML container. Default is a shortened
 *                               version of the output callback name.
 *     @type string $description Widget description for display in the widget administration
 *                               panel and/or theme.
 * }
 * @param mixed      ...$params       Optional additional parameters to pass to the callback function when it's called.
 */
function wp_register_sidebar_widget($id, $name, $output_callback, $options = array(), ...$params)
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_registered_widget_updates, $_wp_deprecated_widgets_callbacks;
    $id = strtolower($id);
    if (empty($output_callback)) {
        unset($wp_registered_widgets[$id]);
        return;
    }
    $id_base = _get_widget_id_base($id);
    if (in_array($output_callback, $_wp_deprecated_widgets_callbacks, true) && !is_callable($output_callback)) {
        unset($wp_registered_widget_controls[$id]);
        unset($wp_registered_widget_updates[$id_base]);
        return;
    }
    $defaults = array('classname' => $output_callback);
    $options = wp_parse_args($options, $defaults);
    $widget = array('name' => $name, 'id' => $id, 'callback' => $output_callback, 'params' => $params);
    $widget = array_merge($widget, $options);
    if (is_callable($output_callback) && (!isset($wp_registered_widgets[$id]) || did_action('widgets_init'))) {
        /**
         * Fires once for each registered widget.
         *
         * @since 3.0.0
         *
         * @param array $widget An array of default widget arguments.
         */
        do_action('wp_register_sidebar_widget', $widget);
        $wp_registered_widgets[$id] = $widget;
    }
}

WordPress Version: 4.9

/**
 * Register an instance of a widget.
 *
 * The default widget option is 'classname' that can be overridden.
 *
 * The function can also be used to un-register widgets when `$output_callback`
 * parameter is an empty string.
 *
 * @since 2.2.0
 *
 * @global array $wp_registered_widgets            Uses stored registered widgets.
 * @global array $wp_registered_widget_controls    Stores the registered widget controls (options).
 * @global array $wp_registered_widget_updates
 * @global array $_wp_deprecated_widgets_callbacks
 *
 * @param int|string $id              Widget ID.
 * @param string     $name            Widget display title.
 * @param callable   $output_callback Run when widget is called.
 * @param array      $options {
 *     Optional. An array of supplementary widget options for the instance.
 *
 *     @type string $classname   Class name for the widget's HTML container. Default is a shortened
 *                               version of the output callback name.
 *     @type string $description Widget description for display in the widget administration
 *                               panel and/or theme.
 * }
 */
function wp_register_sidebar_widget($id, $name, $output_callback, $options = array())
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_registered_widget_updates, $_wp_deprecated_widgets_callbacks;
    $id = strtolower($id);
    if (empty($output_callback)) {
        unset($wp_registered_widgets[$id]);
        return;
    }
    $id_base = _get_widget_id_base($id);
    if (in_array($output_callback, $_wp_deprecated_widgets_callbacks, true) && !is_callable($output_callback)) {
        unset($wp_registered_widget_controls[$id]);
        unset($wp_registered_widget_updates[$id_base]);
        return;
    }
    $defaults = array('classname' => $output_callback);
    $options = wp_parse_args($options, $defaults);
    $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'))) {
        /**
         * Fires once for each registered widget.
         *
         * @since 3.0.0
         *
         * @param array $widget An array of default widget arguments.
         */
        do_action('wp_register_sidebar_widget', $widget);
        $wp_registered_widgets[$id] = $widget;
    }
}

WordPress Version: 4.4

/**
 * Register an instance of a widget.
 *
 * The default widget option is 'classname' that can be overridden.
 *
 * The function can also be used to un-register widgets when `$output_callback`
 * parameter is an empty string.
 *
 * @since 2.2.0
 *
 * @global array $wp_registered_widgets       Uses stored registered widgets.
 * @global array $wp_register_widget_defaults Retrieves widget defaults.
 * @global array $wp_registered_widget_updates
 * @global array $_wp_deprecated_widgets_callbacks
 *
 * @param int|string $id              Widget ID.
 * @param string     $name            Widget display title.
 * @param callable   $output_callback Run when widget is called.
 * @param array      $options {
 *     Optional. An array of supplementary widget options for the instance.
 *
 *     @type string $classname   Class name for the widget's HTML container. Default is a shortened
 *                               version of the output callback name.
 *     @type string $description Widget description for display in the widget administration
 *                               panel and/or theme.
 * }
 */
function wp_register_sidebar_widget($id, $name, $output_callback, $options = array())
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_registered_widget_updates, $_wp_deprecated_widgets_callbacks;
    $id = strtolower($id);
    if (empty($output_callback)) {
        unset($wp_registered_widgets[$id]);
        return;
    }
    $id_base = _get_widget_id_base($id);
    if (in_array($output_callback, $_wp_deprecated_widgets_callbacks, true) && !is_callable($output_callback)) {
        unset($wp_registered_widget_controls[$id]);
        unset($wp_registered_widget_updates[$id_base]);
        return;
    }
    $defaults = array('classname' => $output_callback);
    $options = wp_parse_args($options, $defaults);
    $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'))) {
        /**
         * Fires once for each registered widget.
         *
         * @since 3.0.0
         *
         * @param array $widget An array of default widget arguments.
         */
        do_action('wp_register_sidebar_widget', $widget);
        $wp_registered_widgets[$id] = $widget;
    }
}

WordPress Version: 4.3

/**
 * Register an instance of a widget.
 *
 * The default widget option is 'classname' that can be overridden.
 *
 * The function can also be used to un-register widgets when `$output_callback`
 * parameter is an empty string.
 *
 * @since 2.2.0
 *
 * @global array $wp_registered_widgets       Uses stored registered widgets.
 * @global array $wp_register_widget_defaults Retrieves widget defaults.
 * @global array $wp_registered_widget_updates
 * @global array $_wp_deprecated_widgets_callbacks
 *
 * @param int|string $id              Widget ID.
 * @param string     $name            Widget display title.
 * @param callback   $output_callback Run when widget is called.
 * @param array      $options {
 *     Optional. An array of supplementary widget options for the instance.
 *
 *     @type string $classname   Class name for the widget's HTML container. Default is a shortened
 *                               version of the output callback name.
 *     @type string $description Widget description for display in the widget administration
 *                               panel and/or theme.
 * }
 */
function wp_register_sidebar_widget($id, $name, $output_callback, $options = array())
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_registered_widget_updates, $_wp_deprecated_widgets_callbacks;
    $id = strtolower($id);
    if (empty($output_callback)) {
        unset($wp_registered_widgets[$id]);
        return;
    }
    $id_base = _get_widget_id_base($id);
    if (in_array($output_callback, $_wp_deprecated_widgets_callbacks, true) && !is_callable($output_callback)) {
        unset($wp_registered_widget_controls[$id]);
        unset($wp_registered_widget_updates[$id_base]);
        return;
    }
    $defaults = array('classname' => $output_callback);
    $options = wp_parse_args($options, $defaults);
    $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'))) {
        /**
         * Fires once for each registered widget.
         *
         * @since 3.0.0
         *
         * @param array $widget An array of default widget arguments.
         */
        do_action('wp_register_sidebar_widget', $widget);
        $wp_registered_widgets[$id] = $widget;
    }
}

WordPress Version: 4.1

/**
 * Register an instance of a widget.
 *
 * The default widget option is 'classname' that can be overridden.
 *
 * The function can also be used to un-register widgets when `$output_callback`
 * parameter is an empty string.
 *
 * @since 2.2.0
 *
 * @global array $wp_registered_widgets       Uses stored registered widgets.
 * @global array $wp_register_widget_defaults Retrieves widget defaults.
 *
 * @param int|string $id              Widget ID.
 * @param string     $name            Widget display title.
 * @param callback   $output_callback Run when widget is called.
 * @param array      $options {
 *     Optional. An array of supplementary widget options for the instance.
 *
 *     @type string $classname   Class name for the widget's HTML container. Default is a shortened
 *                               version of the output callback name.
 *     @type string $description Widget description for display in the widget administration
 *                               panel and/or theme.
 * }
 * @return null Will return if `$output_callback` is empty after removing widget.
 */
function wp_register_sidebar_widget($id, $name, $output_callback, $options = array())
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_registered_widget_updates, $_wp_deprecated_widgets_callbacks;
    $id = strtolower($id);
    if (empty($output_callback)) {
        unset($wp_registered_widgets[$id]);
        return;
    }
    $id_base = _get_widget_id_base($id);
    if (in_array($output_callback, $_wp_deprecated_widgets_callbacks, true) && !is_callable($output_callback)) {
        if (isset($wp_registered_widget_controls[$id])) {
            unset($wp_registered_widget_controls[$id]);
        }
        if (isset($wp_registered_widget_updates[$id_base])) {
            unset($wp_registered_widget_updates[$id_base]);
        }
        return;
    }
    $defaults = array('classname' => $output_callback);
    $options = wp_parse_args($options, $defaults);
    $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'))) {
        /**
         * Fires once for each registered widget.
         *
         * @since 3.0.0
         *
         * @param array $widget An array of default widget arguments.
         */
        do_action('wp_register_sidebar_widget', $widget);
        $wp_registered_widgets[$id] = $widget;
    }
}

WordPress Version: 4.0

/**
 * Register widget for use in sidebars.
 *
 * The default widget option is 'classname' that can be overridden.
 *
 * The function can also be used to un-register widgets when $output_callback
 * parameter is an empty string.
 *
 * @since 2.2.0
 *
 * @uses $wp_registered_widgets Uses stored registered widgets.
 * @uses $wp_register_widget_defaults Retrieves widget defaults.
 *
 * @param int|string $id Widget ID.
 * @param string $name Widget display title.
 * @param callback $output_callback Run when widget is called.
 * @param array|string $options Optional. Widget Options.
 * @param mixed $params,... Widget parameters to add to widget.
 * @return null Will return if $output_callback is empty after removing widget.
 */
function wp_register_sidebar_widget($id, $name, $output_callback, $options = array())
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_registered_widget_updates, $_wp_deprecated_widgets_callbacks;
    $id = strtolower($id);
    if (empty($output_callback)) {
        unset($wp_registered_widgets[$id]);
        return;
    }
    $id_base = _get_widget_id_base($id);
    if (in_array($output_callback, $_wp_deprecated_widgets_callbacks, true) && !is_callable($output_callback)) {
        if (isset($wp_registered_widget_controls[$id])) {
            unset($wp_registered_widget_controls[$id]);
        }
        if (isset($wp_registered_widget_updates[$id_base])) {
            unset($wp_registered_widget_updates[$id_base]);
        }
        return;
    }
    $defaults = array('classname' => $output_callback);
    $options = wp_parse_args($options, $defaults);
    $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'))) {
        /**
         * Fires once for each registered widget.
         *
         * @since 3.0.0
         *
         * @param array $widget An array of default widget arguments.
         */
        do_action('wp_register_sidebar_widget', $widget);
        $wp_registered_widgets[$id] = $widget;
    }
}

WordPress Version: 3.9

/**
 * Register widget for use in sidebars.
 *
 * The default widget option is 'classname' that can be override.
 *
 * The function can also be used to unregister widgets when $output_callback
 * parameter is an empty string.
 *
 * @since 2.2.0
 *
 * @uses $wp_registered_widgets Uses stored registered widgets.
 * @uses $wp_register_widget_defaults Retrieves widget defaults.
 *
 * @param int|string $id Widget ID.
 * @param string $name Widget display title.
 * @param callback $output_callback Run when widget is called.
 * @param array|string $options Optional. Widget Options.
 * @param mixed $params,... Widget parameters to add to widget.
 * @return null Will return if $output_callback is empty after removing widget.
 */
function wp_register_sidebar_widget($id, $name, $output_callback, $options = array())
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_registered_widget_updates, $_wp_deprecated_widgets_callbacks;
    $id = strtolower($id);
    if (empty($output_callback)) {
        unset($wp_registered_widgets[$id]);
        return;
    }
    $id_base = _get_widget_id_base($id);
    if (in_array($output_callback, $_wp_deprecated_widgets_callbacks, true) && !is_callable($output_callback)) {
        if (isset($wp_registered_widget_controls[$id])) {
            unset($wp_registered_widget_controls[$id]);
        }
        if (isset($wp_registered_widget_updates[$id_base])) {
            unset($wp_registered_widget_updates[$id_base]);
        }
        return;
    }
    $defaults = array('classname' => $output_callback);
    $options = wp_parse_args($options, $defaults);
    $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'))) {
        /**
         * Fires once for each registered widget.
         *
         * @since 3.0.0
         *
         * @param array $widget An array of default widget arguments.
         */
        do_action('wp_register_sidebar_widget', $widget);
        $wp_registered_widgets[$id] = $widget;
    }
}

WordPress Version: 3.7

/**
 * Register widget for use in sidebars.
 *
 * The default widget option is 'classname' that can be override.
 *
 * The function can also be used to unregister widgets when $output_callback
 * parameter is an empty string.
 *
 * @since 2.2.0
 *
 * @uses $wp_registered_widgets Uses stored registered widgets.
 * @uses $wp_register_widget_defaults Retrieves widget defaults.
 *
 * @param int|string $id Widget ID.
 * @param string $name Widget display title.
 * @param callback $output_callback Run when widget is called.
 * @param array|string $options Optional. Widget Options.
 * @param mixed $params,... Widget parameters to add to widget.
 * @return null Will return if $output_callback is empty after removing widget.
 */
function wp_register_sidebar_widget($id, $name, $output_callback, $options = array())
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_registered_widget_updates, $_wp_deprecated_widgets_callbacks;
    $id = strtolower($id);
    if (empty($output_callback)) {
        unset($wp_registered_widgets[$id]);
        return;
    }
    $id_base = _get_widget_id_base($id);
    if (in_array($output_callback, $_wp_deprecated_widgets_callbacks, true) && !is_callable($output_callback)) {
        if (isset($wp_registered_widget_controls[$id])) {
            unset($wp_registered_widget_controls[$id]);
        }
        if (isset($wp_registered_widget_updates[$id_base])) {
            unset($wp_registered_widget_updates[$id_base]);
        }
        return;
    }
    $defaults = array('classname' => $output_callback);
    $options = wp_parse_args($options, $defaults);
    $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;
    }
}