- if(is_admin())
- {
- new Cool_Wp_List_Table();
- }
-
- /**
- * Cool_Wp_List_Table class will create the page to load the table
- */
- class Cool_Wp_List_Table
- {
- /**
- * Constructor will create the menu item
- */
- public function __construct()
- {
- add_action( 'admin_menu', array($this, 'add_menu_example_list_table_page' ));
- }
-
- /**
- * Menu item will allow us to load the page to display the table
- */
- public function add_menu_example_list_table_page()
- {
- add_menu_page( 'Coowp示例表格', 'Coowp示例表格', 'manage_options', 'coolwp-list-table.php', array($this, 'list_table_page') );
- }
-
- /**
- * Display the list table page
- *
- * @return Void
- */
- public function list_table_page()
- {
- $exampleListTable = new Example_List_Table();
- $exampleListTable->prepare_items();
- ?>
- <div class="wrap">
- <div id="icon-users" class="icon32"></div>
- <h2>Coowp示例表格-页面标题</h2>
- <?php $exampleListTable->display(); ?>
- </div>
- <?php
- }
- }
-
- // WP_List_Table is not loaded automatically so we need to load it in our application
- if( ! class_exists( 'WP_List_Table' ) ) {
- require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
- }
-
- /**
- * Create a new table class that will extend the WP_List_Table
- */
- class Example_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 = 2;
- $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->items = $data;
- }
-
- /**
- * Override the parent columns method. Defines the columns to use in your listing table
- *
- * @return Array
- */
- public function get_columns()
- {
- $columns = array(
- 'id' => __('ID'),
- 'title' => __('Title'),
- 'description' => __('描述'),
- //__('Description'),怎么被Wordpress翻译为“图像描述”了?
- 'date' => __('Date'),
- 'price' => __('价格'),//__('Price'),
- 'rating' => __('Rating')
- );
-
- 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));
- }
-
- /**
- * Get the table data
- *
- * @return Array
- */
- private function table_data()
- {
- $data = array();
-
- $data[] = array(
- 'id' => 1,
- 'title' => '某IT设备租赁公司:杨先生',
- 'description' => '上海,需求描述',
- 'date' => '2013.01.01',
- 'price' => '---',
- 'rating' => '7.3'
- );
-
- $data[] = array(
- 'id' => 2,
- 'title' => '某婚摄团队:李先生',
- 'description' => '台湾,台北',
- 'date' => '2013.12.15',
- 'price' => '---',
- 'rating' => '7.2'
- );
-
- $data[] = array(
- 'id' => 3,
- 'title' => '在校研究生:梁小姐',
- 'description' => '墨尔本大学:艺术设计',
- 'date' => '2013.12.03',
- 'price' => '---',
- 'rating' => '7.0'
- );
-
- $data[] = array(
- 'id' => 4,
- 'title' => '某私人航空公司',
- 'description' => '仅前端交互:何小姐',
- 'date' => '2014.01.01',
- 'price' => '---',
- 'rating' => '7.0'
- );
- 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 'description':
- case 'date':
- case 'price':
- case 'rating':
- 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(!emptyempty($_GET['orderby']))
- {
- $orderby = $_GET['orderby'];
- }
-
- // If order is set use this as the order
- if(!emptyempty($_GET['order']))
- {
- $order = $_GET['order'];
- }
-
- $result = strcmp( $a[$orderby], $b[$orderby] );
-
- if($order === 'asc')
- {
- return $result;
- }
-
- return -$result;
- }
- }
ENJOY IT!
|