Make WordPress Core


Ignore:
Timestamp:
10/21/2015 05:22:52 AM (11 years ago)
Author:
azaozz
Message:

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

Props cdog.
Fixes #19159.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/widgets.php

    r35102 r35317  
    195195}
    196196
     197// Remove inactive widgets without js
     198if ( isset( $_POST['removeinactivewidgets'] ) ) {
     199        check_admin_referer( 'remove-inactive-widgets', '_wpnonce_remove_inactive_widgets' );
     200
     201        if ( $_POST['removeinactivewidgets'] ) {
     202                foreach ( $sidebars_widgets['wp_inactive_widgets'] as $key => $widget_id ) {
     203                        $pieces = explode( '-', $widget_id );
     204                        $multi_number = array_pop( $pieces );
     205                        $id_base = implode( '-', $pieces );
     206                        $widget = get_option( 'widget_' . $id_base );
     207                        unset( $widget[$multi_number] );
     208                        update_option( 'widget_' . $id_base, $widget );
     209                        unset( $sidebars_widgets['wp_inactive_widgets'][$key] );
     210                }
     211
     212                wp_set_sidebars_widgets( $sidebars_widgets );
     213        }
     214
     215        wp_redirect( admin_url( 'widgets.php?message=0' ) );
     216        exit;
     217}
     218
    197219// Output the widget form without js
    198220if ( isset($_GET['editwidget']) && $_GET['editwidget'] ) {
    … …  
    389411                        <div class="widget-holder inactive">
    390412                                <?php wp_list_widget_controls( $registered_sidebar['id'], $registered_sidebar['name'] ); ?>
    391                                 <div class="clear"></div>
     413                                <div class="remove-inactive-widgets">
     414                                        <form action="" method="post">
     415                                                <p>
     416                                                        <?php
     417                                                        $attributes = array( 'id' => 'inactive-widgets-control-remove' );
     418
     419                                                        if ( empty($sidebars_widgets['wp_inactive_widgets']) ) {
     420                                                                $attributes['disabled'] = '';
     421                                                        }
     422
     423                                                        submit_button( __( 'Clear Inactive Widgets' ), 'delete', 'removeinactivewidgets', false, $attributes );
     424                                                        ?>
     425                                                        <span class="spinner">
     426                                                </p>
     427                                                <?php wp_nonce_field( 'remove-inactive-widgets', '_wpnonce_remove_inactive_widgets' ); ?>
     428                                        </form>
     429                                </div>
    392430                        </div>
     431                        <p class="description"><?php _e( 'This will clear all items from the inactive widgets list. You will not be able to restore any customizations.' ); ?></p>
    393432                </div>
    394433                <?php
Note: See TracChangeset for help on using the changeset viewer.