Skip to content

Instantly share code, notes, and snippets.

@andtrev
Created May 18, 2017 18:13
Show Gist options
  • Save andtrev/1452b24b22ecd93031c4f16d5a5a445d to your computer and use it in GitHub Desktop.
Save andtrev/1452b24b22ecd93031c4f16d5a5a445d to your computer and use it in GitHub Desktop.
WP List Table Bulk Delete Example
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(),
);
}
}
@wonsuchai
Copy link

ขอบคุณครับ.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment