Widgets: add a button to delete all inactive widgets simultaneously for better UX.

Props cdog.
Fixes #19159.

git-svn-id: https://develop.svn.wordpress.org/trunk@35317 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Andrew Ozz
2015-10-21 05:22:52 +00:00
parent ba1177bf4c
commit 7ba408c93e
5 changed files with 111 additions and 3 deletions

View File

@@ -1933,6 +1933,41 @@ function wp_ajax_update_widget() {
$wp_customize->widgets->wp_ajax_update_widget();
}
/**
* Ajax handler for removing inactive widgets.
*
* @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'] );
do_action( 'load-widgets.php' );
do_action( '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();
}
/**
* Ajax handler for uploading attachments
*