Sammelaktionshaken für Verwaltungsseiten, die WP_List_Table verwenden

Ich habe eine Admin-Seite, die ich hinzugefügt habe mit add_submenu_page -function, die einige benutzerdefinierte Daten mit WP_List_Table class auflistet. Ich habe die Optionen für Massenaktionen in get_bulk_actions definiert und es erscheint im Dropdown-Menü. Aber welcher Haken wird ausgetriggers, wenn der Benutzer das Formular absendet.

Ich habe versucht zu folgen, aber kein Glück

add_action( 'admin_action_YOUR_ACTION', 'your_bulk_action_handler_function' );

Jetzt habe ich eine Hook-function in ‘admin_init’ definiert und überprüfe, if(isset($_POST['action']) && $_POST['action'] == 'export_action' ) { //Export code here. } if(isset($_POST['action']) && $_POST['action'] == 'export_action' ) { //Export code here. }

Aber gibt es einen besseren Weg?

Solutions Collecting From Web of "Sammelaktionshaken für Verwaltungsseiten, die WP_List_Table verwenden"

Sie müssen die function “process_bulk_action” wie folgt verwenden:

 public function process_bulk_action() { //nonce validations,etc $action = $this->current_action(); switch ( $action ) { case 'export_action': // Do whatever you want wp_redirect( esc_url( add_query_arg() ) ); break; default: // do nothing or something else return; break; } return; } } 

Wenn Sie ein vollständiges Beispiel benötigen, ist dies der Code, den ich für ein Plugin verwende:

  public function process_bulk_action() { if ( isset( $_POST['_wpnonce'] ) && ! empty( $_POST['_wpnonce'] ) ) { echo '
'; print_r($_POST); echo '

'; $nonce = filter_input( INPUT_POST, '_wpnonce', FILTER_SANITIZE_STRING ); $action = 'bulk-' . $this->_args['plural']; if ( ! wp_verify_nonce( $nonce, $action ) ) wp_die( 'Nope! Security check failed!' ); } $action = $this->current_action(); switch ( $action ) { case 'delete': self::delete_activity( absint( $_GET['activity'] ) ); wp_redirect( esc_url( add_query_arg() ) ); break; case 'bulk-delete': $ids = esc_sql( $_POST['bulk-selected'] ); foreach ( $ids as $id ) { self::delete_activity( $id ); } wp_redirect( esc_url( add_query_arg() ) ); break; case 'bulk-export': $ids = esc_sql( $_POST['bulk-selected'] ); self::export_activities( $ids ); wp_redirect( esc_url( add_query_arg() ) ); break; default: // do nothing or something else return; break; } return; }

Ich hoffe das hilft dir 😉