$testData = new Test_List_Table();
$testData->prepare_items();
?>
$testData->search_box( 'search', 'search_id' );
$testData->display();
?>
if( ! class_exists( 'WP_List_Table' ) ) {
require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
}
class Test_List_Table extends WP_List_Table
{
/**
* Prepare the items for the table to process
*
* @return Void
*/
public function prepare_items()
{
$columns = $this->get_columns();
$hidden = $this->get_hidden_columns();
$sortable = $this->get_sortable_columns();
$data = $this->table_data();
usort( $data, array( &$this, 'sort_data' ) );
$perPage = 10;
$currentPage = $this->get_pagenum();
$totalItems = count($data);
$this->set_pagination_args( array(
'total_items' => $totalItems,
'per_page' => $perPage
) );
$data = array_slice($data,(($currentPage-1)*$perPage),$perPage);
$this->_column_headers = array($columns, $hidden, $sortable);
$this->process_bulk_action();
$this->items = $data;
}
/**
* Override the parent columns method. Defines the columns to use in your listing table
*
* @return Array
*/
public function get_columns()
{
$columns = array(
'cb' => '',
'title' => 'Title',
'sort_desc' => 'Short Description',
'edit' => 'Edit',
'view' => 'View',
'delete' => 'Delete'
);
return $columns;
}
/**
* Define which columns are hidden
*
* @return Array
*/
public function get_hidden_columns()
{
return array();
}
/**
* Define the sortable columns
*
* @return Array
*/
public function get_sortable_columns()
{
return array('title' => array('title', false));
}
function get_bulk_actions() {
$actions = array(
'delete_multi' => 'Delete'
);
return $actions;
}
function column_cb($item) {
return sprintf(
'', $item['id']
);
}
/**
* Get the table data
*
* @return Array
*/
private function table_data()
{
$data = array();
global $wpdb;
$whereCnd = '';
if(isset($_REQUEST['s'])){
$whereCnd = ' Search query ' ;
}
$listsData = $wpdb->get_results( "Main Query");
if(!empty($listsData)) {
foreach($listsData as $key => $val){
$delNonce = wp_create_nonce( 'wp-list-'.$val->ID.'-delete-nonce' );
$data[] = array(
'id' => $val->ID,
'title' => $val->title,
'sort_desc' => $val->sort_description,
'edit' => 'edit',
'view' => 'View',
'delete' => 'Delete'
);
}
}
return $data;
}
/**
* Define what data to show on each column of the table
*
* @param Array $item Data
* @param String $column_name - Current column name
*
* @return Mixed
*/
public function column_default( $item, $column_name )
{
switch( $column_name ) {
case 'id':
case 'title':
case 'sort_desc':
case 'edit':
case 'view':
case 'delete':
return $item[ $column_name ];
default:
return print_r( $item, true ) ;
}
}
/**
* Allows you to sort the data by the variables set in the $_GET
*
* @return Mixed
*/
private function sort_data( $a, $b )
{
// Set defaults
$orderby = 'title';
$order = 'asc';
// If orderby is set, use this as the sort column
if(!empty($_GET['orderby']))
{
$orderby = $_GET['orderby'];
}
// If order is set use this as the order
if(!empty($_GET['order']))
{
$order = $_GET['order'];
}
$result = strcmp( $a[$orderby], $b[$orderby] );
if($order === 'asc')
{
return $result;
}
return -$result;
}
function process_bulk_action() {
global $wpdb;
if( 'delete_multi'===$this->current_action() ) {
global $wpdb;
if(is_array($_REQUEST['id']))
{
echo "Your actions";
}
die();
}
}
}
No comments:
Post a Comment