как выполнять персонализированные групповые действия для WP_List_Table (основной класс)

Я использую класс WP_List_Table и я добавил ссылки для следующих действий:

 function get_bulk_actions() { $actions = array(); $actions['approv'] ='<a href="#">'.__( 'Approve' ).'</a>'; $actions['reject'] = '<a href="#">'.__( 'Reject' ).'</a>'; $actions['delete'] = '<a href="#">'.__( 'Delete' ).'</a>'; $actions['view'] = '<a href="#">'.__( 'View' ).'</a>'; return $actions; } 

Затем я показываю их в функции display_row() следующим образом:

 $actions = $this->get_bulk_actions(); echo $this->row_actions( $actions ); 

Теперь мне интересно, как добавить пользовательские действия к тем ссылкам, которые я создал. Есть ли в любом случае, где я могу отправить переменные на страницу? Для выполнения обработки БД этих ссылок и повторного WP_List_Table который был создан до того, как я выполнил действие.

ОБНОВЛЕНИЕ 1

Вот полный код для класса WP_List_Table :

 <?php // Our class extends the WP_List_Table class, so we need to make sure that it's there if( ! class_exists( 'WP_List_Table' ) ) { require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' ); } class Link_List_Table extends WP_List_Table { /** * Constructor, we override the parent to pass our own arguments * We usually focus on three parameters: singular and plural labels, as well as whether the class supports AJAX. */ function __construct() { parent::__construct( array( 'singular'=> 'wp_list_text_link', //Singular label 'plural' => 'wp_list_test_links', //plural label, also this well be one of the table css class 'ajax' => true //We won't support Ajax for this table ) ); } /** * Define the columns that are going to be used in the table * @return array $columns, the array of columns to use with the table */ function get_columns() { return $columns= array( 'col_person_name' => 'Name', 'col_business_name' => 'Bussiness Name' , 'col_person_email' => 'Email' , 'col_pserson_phone' => 'Contact Number', 'col_request_status' => 'Status', 'col_is_deleted' => 'Deleted' ); } /** * Prepare the table with different parameters, pagination, columns and table elements */ function prepare_items() { global $wpdb, $_wp_column_headers; $screen = get_current_screen(); /* -- Preparing your query -- */ $query = "SELECT * FROM approval_requests"; /* -- Ordering parameters -- */ //Parameters that are going to be used to order the result $orderby = !empty($_GET["orderby"]) ? mysql_real_escape_string($_GET["orderby"]) : 'ASC'; $order = !empty($_GET["order"]) ? mysql_real_escape_string($_GET["order"]) : ''; if(!empty($orderby) & !empty($order)){ $query.=' ORDER BY '.$orderby.' '.$order; } /* -- Pagination parameters -- */ //Number of elements in your table? $totalitems = $wpdb->query($query); //return the total number of affected rows //How many to display per page? $perpage = 20; //Which page is this? $paged = !empty($_GET["paged"]) ? mysql_real_escape_string($_GET["paged"]) : ''; //Page Number if(empty($paged) || !is_numeric($paged) || $paged<=0 ){ $paged=1; } //How many pages do we have in total? $totalpages = ceil($totalitems/$perpage); //adjust the query to take pagination into account if(!empty($paged) && !empty($perpage)){ $offset=($paged-1)*$perpage; $query.=' LIMIT '.(int)$offset.','.(int)$perpage; } /* -- Register the pagination -- */ $this->set_pagination_args( array( "total_items" => $totalitems, "total_pages" => $totalpages, "per_page" => $perpage, ) ); //The pagination links are automatically built according to those parameters /* -- Register the Columns -- */ $columns = $this->get_columns(); $hidden = array(); $sortable = array(); $this->_column_headers = array($columns, $hidden, $sortable); /* -- Fetch the items -- */ $this->items = $wpdb->get_results($query); } /** * Display the rows of records in the table * @return string, echo the markup of the rows */ function display_rows() { //Get the records registered in the prepare_items method $records = $this->items; list( $columns, $hidden ) = $this->get_column_info(); //print_r($records); //Loop for each record if(!empty($records)){foreach($records as $rec){ //Open the line echo '<tr id="record_'.$rec->sr_no.'">'; foreach ( $columns as $column_name => $column_display_name ) { //Style attributes for each col $class = "class='$column_name column-$column_name'"; $style = ""; if ( in_array( $column_name, $hidden ) ) $style = ' style="display:none;"'; $attributes = $class . $style; //edit link //Display the cell switch ( $column_name ) { case "col_person_name": echo '<td '.$attributes.'>'.stripslashes($rec->person_name); $actions = $this->get_bulk_actions(); echo $this->row_actions( $actions ); echo '</td>'; break; case "col_business_name": echo '<td '.$attributes.'>'.stripslashes($rec->business_name).'</td>'; break; case "col_person_email": echo '<td '.$attributes.'>'.$rec->person_email.'</td>'; break; case "col_pserson_phone": echo '<td '.$attributes.'>'.$rec->pserson_phone.'</td>'; break; case "col_request_status": echo '<td '.$attributes.'>'.$rec->request_status.'</td>'; break; case "col_is_deleted": echo '<td '.$attributes.'>'.$rec->is_deleted.'</td>'; break; } } //Close the line echo'</tr>'; }} } function get_bulk_actions() { $actions = array(); $actions['approv'] ='<a href="#">'.__( 'Approve' ).'</a>'; $actions['reject'] = '<a href="#">'.__( 'Reject' ).'</a>'; $actions['delete'] = '<a href="#">'.__( 'Delete' ).'</a>'; $actions['view'] = '<a href="#">'.__( 'View' ).'</a>'; return $actions; } } function show_table(){ $wp_list_table = new Link_List_Table(); $wp_list_table->prepare_items(); //Table of elements $wp_list_table->display(); } ?>