_wp_remove_unregistered_widgets

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

WordPress Version: 6.5

/**
 * Compares a list of sidebars with their widgets against an allowed list.
 *
 * @since 4.9.0
 *
 * @global array $wp_registered_widgets The registered widgets.
 *
 * @param array $sidebars_widgets   List of sidebars and their widget instance IDs.
 * @param array $allowed_widget_ids Optional. List of widget IDs to compare against. Default: Registered widgets.
 * @return array Sidebars with allowed widgets.
 */
function _wp_remove_unregistered_widgets($sidebars_widgets, $allowed_widget_ids = array())
{
    if (empty($allowed_widget_ids)) {
        $allowed_widget_ids = array_keys($GLOBALS['wp_registered_widgets']);
    }
    foreach ($sidebars_widgets as $sidebar => $widgets) {
        if (is_array($widgets)) {
            $sidebars_widgets[$sidebar] = array_intersect($widgets, $allowed_widget_ids);
        }
    }
    return $sidebars_widgets;
}

WordPress Version: 5.5

/**
 * Compares a list of sidebars with their widgets against an allowed list.
 *
 * @since 4.9.0
 *
 * @param array $sidebars_widgets   List of sidebars and their widget instance IDs.
 * @param array $allowed_widget_ids Optional. List of widget IDs to compare against. Default: Registered widgets.
 * @return array Sidebars with allowed widgets.
 */
function _wp_remove_unregistered_widgets($sidebars_widgets, $allowed_widget_ids = array())
{
    if (empty($allowed_widget_ids)) {
        $allowed_widget_ids = array_keys($GLOBALS['wp_registered_widgets']);
    }
    foreach ($sidebars_widgets as $sidebar => $widgets) {
        if (is_array($widgets)) {
            $sidebars_widgets[$sidebar] = array_intersect($widgets, $allowed_widget_ids);
        }
    }
    return $sidebars_widgets;
}

WordPress Version: 4.9

/**
 * Compares a list of sidebars with their widgets against a whitelist.
 *
 * @since 4.9.0
 *
 * @param array $sidebars_widgets List of sidebars and their widget instance IDs.
 * @param array $whitelist        Optional. List of widget IDs to compare against. Default: Registered widgets.
 * @return array Sidebars with whitelisted widgets.
 */
function _wp_remove_unregistered_widgets($sidebars_widgets, $whitelist = array())
{
    if (empty($whitelist)) {
        $whitelist = array_keys($GLOBALS['wp_registered_widgets']);
    }
    foreach ($sidebars_widgets as $sidebar => $widgets) {
        if (is_array($widgets)) {
            $sidebars_widgets[$sidebar] = array_intersect($widgets, $whitelist);
        }
    }
    return $sidebars_widgets;
}