Created
May 18, 2017 18:13
-
-
Save andtrev/1452b24b22ecd93031c4f16d5a5a445d 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
ขอบคุณครับ.