WordPress Version: 6.3
/**
* Handles removing inactive widgets via AJAX.
*
* @since 4.4.0
*/
function wp_ajax_delete_inactive_widgets()
{
check_ajax_referer('remove-inactive-widgets', 'removeinactivewidgets');
if (!current_user_can('edit_theme_options')) {
wp_die(-1);
}
unset($_POST['removeinactivewidgets'], $_POST['action']);
/** This action is documented in wp-admin/includes/ajax-actions.php */
do_action('load-widgets.php');
// phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
/** This action is documented in wp-admin/includes/ajax-actions.php */
do_action('widgets.php');
// phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
/** This action is documented in wp-admin/widgets.php */
do_action('sidebar_admin_setup');
$sidebars_widgets = wp_get_sidebars_widgets();
foreach ($sidebars_widgets['wp_inactive_widgets'] as $key => $widget_id) {
$pieces = explode('-', $widget_id);
$multi_number = array_pop($pieces);
$id_base = implode('-', $pieces);
$widget = get_option('widget_' . $id_base);
unset($widget[$multi_number]);
update_option('widget_' . $id_base, $widget);
unset($sidebars_widgets['wp_inactive_widgets'][$key]);
}
wp_set_sidebars_widgets($sidebars_widgets);
wp_die();
}