Make WordPress Core


Ignore:
Timestamp:
10/21/2015 05:22:52 AM (8 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.