Forked from andtrev/wp_list_table_bulk_delete_example.php
Last active
September 23, 2022 19:42
-
-
Save wonsuchai/c1d35976a336e76761786651bed0793e to your computer and use it in GitHub Desktop.
WP List Table Bulk Delete Example
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 characters
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(), | |
); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment