log_404_table = $GLOBALS['wpdb']->prefix . '404_log'; $this->extra_columns = $extra_columns; parent::__construct(); } function get_columns(){ $cols = array( 'cb' => '', 'date' => 'Date', 'url' => 'URL', 'ua' => 'User Agent', 'ref' => 'HTTP Referer', 'ip' => 'IP Address' ); foreach( array( 'ua', 'ref', 'ip' ) as $c ) if( ! in_array( $c, $this->extra_columns ) ) unset( $cols[$c] ); return $cols; } function get_sortable_columns() { return array( 'date' => 'date', 'url' => 'url', 'ua' => 'ua', 'ref' => 'ref', 'ip' => 'ip' ); } function get_bulk_actions() { return array( 'delete' => 'Delete' ); } protected function column_default( $item, $column_name ){ return esc_html( $item->$column_name ); } protected function column_url( $item ){ $url = esc_html( $item->url ); // don't use esc_url because it could be an invalid one that 404d return "$url"; } protected function column_ip( $item ){ $ip = esc_html( $item->ip ); return "$ip"; } protected function column_cb( $item ){ return ""; } private function bulk_delete() { global $wpdb; if( empty( $_REQUEST['delete_404'] ) ) { return; } $item_ids = array_map( 'intval', (array) $_REQUEST['delete_404'] ); $item_ids = implode(',', $item_ids); return $wpdb->query( "DELETE FROM $this->log_404_table WHERE id IN ($item_ids)" ); } function prepare_items() { global $wpdb; // process bulk deletes if( 'delete' === $this->current_action() ) { $deleted = $this->bulk_delete(); echo '
' . $deleted . ' rows deleted