Title: _wp_remove_unregistered_widgets
Published: November 20, 2017
Last modified: May 20, 2026

---

# _wp_remove_unregistered_widgets( array $sidebars_widgets, array $allowed_widget_ids = array() ): array

## In this article

 * [Parameters](https://developer.wordpress.org/reference/functions/_wp_remove_unregistered_widgets/?output_format=md#parameters)
 * [Return](https://developer.wordpress.org/reference/functions/_wp_remove_unregistered_widgets/?output_format=md#return)
 * [Source](https://developer.wordpress.org/reference/functions/_wp_remove_unregistered_widgets/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/functions/_wp_remove_unregistered_widgets/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/functions/_wp_remove_unregistered_widgets/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/functions/_wp_remove_unregistered_widgets/?output_format=md#wp--skip-link--target)

Compares a list of sidebars with their widgets against an allowed list.

## 󠀁[Parameters](https://developer.wordpress.org/reference/functions/_wp_remove_unregistered_widgets/?output_format=md#parameters)󠁿

 `$sidebars_widgets`arrayrequired

List of sidebars and their widget instance IDs.

`$allowed_widget_ids`arrayoptional

List of widget IDs to compare against. Default: Registered widgets.

Default:`array()`

## 󠀁[Return](https://developer.wordpress.org/reference/functions/_wp_remove_unregistered_widgets/?output_format=md#return)󠁿

 array Sidebars with allowed widgets.

## 󠀁[Source](https://developer.wordpress.org/reference/functions/_wp_remove_unregistered_widgets/?output_format=md#source)󠁿

    ```php
    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;
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/widgets.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.0/src/wp-includes/widgets.php#L1577)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/widgets.php#L1577-L1589)

## 󠀁[Related](https://developer.wordpress.org/reference/functions/_wp_remove_unregistered_widgets/?output_format=md#related)󠁿

| Used by | Description | 
| [wp_map_sidebars_widgets()](https://developer.wordpress.org/reference/functions/wp_map_sidebars_widgets/)`wp-includes/widgets.php` |

Compares a list of sidebars with their widgets against an allowed list.

  | 
| [retrieve_widgets()](https://developer.wordpress.org/reference/functions/retrieve_widgets/)`wp-includes/widgets.php` |

Validates and remaps any “orphaned” widgets to wp_inactive_widgets sidebar, and saves the widget settings. This has to run at least on each theme change.

  |

## 󠀁[Changelog](https://developer.wordpress.org/reference/functions/_wp_remove_unregistered_widgets/?output_format=md#changelog)󠁿

| Version | Description | 
| [4.9.0](https://developer.wordpress.org/reference/since/4.9.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2F_wp_remove_unregistered_widgets%2F)
before being able to contribute a note or feedback.