Created
May 18, 2017 18:13
Revisions
-
andtrev created this gist
May 18, 2017 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,127 @@ function admin_menu_add() { $hook_suffix = add_menu_page( __( 'Bulk Deleter', 'bulk-delete-example' ), __( 'Bull Deleters', 'bulk-delete-example' ), 'administrator', 'bulk-delete-example', 'bulk_delete_admin_page' ); add_action( "load-{$hook_suffix}", 'admin_delete_action' ); } add_action( 'admin_menu', 'admin_menu_add' ); function bulk_delete_admin_page() { if ( ! empty( $_REQUEST['_wp_http_referer'] ) ) { wp_redirect( remove_query_arg( array( '_wp_http_referer', '_wpnonce', 'action', 'action2', 'paged' ), wp_unslash( $_SERVER['REQUEST_URI'] ) ) ); exit; } if ( isset( $_GET['deleted'] ) && 'success' === $_GET['deleted'] ) { echo '<div class="notice notice-success is-dismissible"><p>' . __( 'Successfully deleted.', 'bulk-delete-example' ) . '</p></div>'; } if ( isset( $_GET['deleted'] ) && 'error' === $_GET['deleted'] ) { echo '<div class="notice notice-error is-dismissible"><p>' . __( 'Error deleting.', 'bulk-delete-example' ) . '</p></div>'; } $_SERVER['REQUEST_URI'] = remove_query_arg( array( 'updated', 'deleted', '_wpnonce', '_wp_http_referer' ), $_SERVER['REQUEST_URI'] ); ?> <form method="get"> <input type="hidden" name="page" value="bulk-delete-example"> <?php $list_table = new Bulk_Delete_Admin_List(); $list_table->prepare_items(); $list_table->display(); ?> </form> <?php } function admin_delete_action() { if ( isset( $_GET['_wpnonce'] ) && wp_verify_nonce( $_GET['_wpnonce'], 'bulk-' . sanitize_key( 'bulk-delete' ) ) ) { if ( ( isset( $_GET['action'] ) && 'bulk-delete' === $_GET['action'] ) || ( isset( $_GET['action2'] ) && 'bulk-delete' === $_GET['action2'] ) ) { if ( empty( $_GET['bulk-item-selection'] ) ) { return; } $delete_error = delete_the_things(); $sendback = remove_query_arg( array( 'action', 'action2', '_wpnonce', '_wp_http_referer', 'bulk-item-selection', 'delete_id', 'updated' ), wp_get_referer() ); if ( false === $delete_error ) { $sendback = add_query_arg( 'deleted', 'error', $sendback ); } else { $sendback = add_query_arg( 'deleted', 'success', $sendback ); } wp_redirect( $sendback ); exit(); } } } class Bulk_Delete_Admin_List extends WP_List_Table { public function __construct() { parent::__construct( array( 'singular' => 'bulk-delete', 'plural' => 'bulk-deletes', 'ajax' => false ) ); } public function get_columns() { return array( 'cb' => '<input type="checkbox" />', ); } public function column_cb( $item ) { return sprintf( '<input type="checkbox" class="bulk-item-selection" name="bulk-item-selection[]" value="%s" />', $item['id'] ); } public function get_bulk_actions() { return array( 'bulk-delete' => __( 'Delete', 'bulk-delete-example' ), ); } public function prepare_items() { $this->items[] = array( 'id' => get_the_item_id(), ); } }