За последние 24 часа нас посетили 6595 программистов и 529 роботов. Сейчас ищут 208 программистов ...

WP_LIST_TABLE

Тема в разделе "Wordpress", создана пользователем TillTheDayIDie, 7 июн 2018.

  1. TillTheDayIDie

    TillTheDayIDie Новичок

    С нами с:
    11 апр 2018
    Сообщения:
    19
    Симпатии:
    0
    <?php
    if( ! class_exists( 'WP_List_Table' ) ) {
    require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
    }

    class dzh_matrix_list_table extends WP_List_Table{

    function __construct(){
    parent::__construct(array(
    'singular' => __('Matrices'),
    'plural' => __('Matrix'),
    'ajax' => false
    ));
    }

    function get_columns(){
    return $this->columns;
    }

    function set_columns( $args = array() ) {
    if(count( $this->bulk_actions ) ) {
    $args = array_merge( array( 'cb' => '<input type="checkbox" />' ), $args );
    }
    $this->columns = $args;
    return $this;
    }

    function dataToDisplay(){
    global $wpdb;
    $dataToDisplay = array();
    $users = get_users();
    foreach ($users as $user) {
    $sql = "SELECT MAX(meta_value) as meta_value FROM wp_usermeta WHERE meta_key = 'postmeta_matrix_id' AND user_id = ".$user->ID;
    $meta_value = $wpdb->get_row($sql)->meta_value;
    $postmeta = get_post_meta_by_id($meta_value);

    foreach ($postmeta as $item) {
    if(is_array($item)){
    $timestamp = $item['date'];
    }
    }

    $datetimeFormat = 'Y-m-d';
    $date = new DateTime();
    $date->setTimestamp($timestamp);
    $dataToDisplay[] = array('ID' => $user->ID, 'user'=>$user->display_name, 'date' => $date->format($datetimeFormat));
    }
    return $dataToDisplay;
    }

    function prepare_items(){
    $columns = $this->get_columns();
    $hidden = array();
    $sortable = array();
    $this->_columns_headers = array($columns, $hidden, $sortable);
    $this->items = $this->dataToDisplay();
    }

    function columns_default($item, $column_name){
    switch ($column_name) {
    case 'user':
    return $item[$column_name];
    case 'date':
    return $item[$column_name];
    default:
    return print_r($item, true);
    }
    }
    }

    Вызов:
    function addMatrixPage(){
    require_once 'dzh_matrix_list_table.php';
    $dzh_matrix_list_table = new dzh_matrix_list_table();
    $dzh_matrix_list_table->set_columns(array(
    'user' => __('User'),
    'date' => __('Date')
    ));
    $dzh_matrix_list_table->prepare_items();
    ?>
    <div class = "wrap">
    <form action="" method="get" name="matrices" id="matrices">
    <input type="hidden" name="page" value="matrix_menu" />
    <?php
    $dzh_matrix_list_table->display();
    ?>
    </form>
    </div>
    <?php
    }
    Простите, если оформлено плохо
     
  2. nospiou

    nospiou Активный пользователь

    С нами с:
    4 фев 2018
    Сообщения:
    2.905
    Симпатии:
    403
    Не простим. Вверху над полем ввода сообщения самая левая иконка это тег кода. Вставь туда.
     
  3. TillTheDayIDie

    TillTheDayIDie Новичок

    С нами с:
    11 апр 2018
    Сообщения:
    19
    Симпатии:
    0
    Код (Text):
    1. <?php
    2.     if( ! class_exists( 'WP_List_Table' ) ) {
    3.         require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
    4.     }
    5.    
    6.     class dzh_matrix_list_table extends WP_List_Table{
    7.  
    8.         function __construct(){
    9.             parent::__construct(array(
    10.                 'singular'  => __('Matrices'),
    11.                 'plural'    => __('Matrix'),
    12.                 'ajax'      => false
    13.             ));
    14.         }
    15.  
    16.         function get_columns(){
    17.             return $this->columns;
    18.         }
    19.  
    20.         function set_columns( $args = array() ) {
    21.                 if(count( $this->bulk_actions ) ) {
    22.                     $args = array_merge( array( 'cb' => '<input type="checkbox" />' ), $args );
    23.             }
    24.             $this->columns = $args;
    25.                return $this;
    26.         }
    27.  
    28.         function dataToDisplay(){
    29.             global $wpdb;
    30.             $dataToDisplay = array();
    31.             $users = get_users();
    32.             foreach ($users as $user) {
    33.                 $sql = "SELECT MAX(meta_value) as meta_value FROM wp_usermeta WHERE meta_key = 'postmeta_matrix_id' AND user_id = ".$user->ID;
    34.                 $meta_value = $wpdb->get_row($sql)->meta_value;
    35.                 $postmeta = get_post_meta_by_id($meta_value);
    36.            
    37.                 foreach ($postmeta as $item) {
    38.                     if(is_array($item)){
    39.                         $timestamp = $item['date'];
    40.                     }  
    41.                 }
    42.  
    43.                 $datetimeFormat = 'Y-m-d';
    44.                 $date = new DateTime();
    45.                 $date->setTimestamp($timestamp);
    46.                 $dataToDisplay[] = array('ID' => $user->ID, 'user'=>$user->display_name, 'date' => $date->format($datetimeFormat));
    47.             }  
    48.             return $dataToDisplay;
    49.         }  
    50.  
    51.         function prepare_items(){
    52.             $columns = $this->get_columns();
    53.             $hidden = array();
    54.             $sortable = array();
    55.             $this->_columns_headers = array($columns, $hidden, $sortable);
    56.             $this->items = $this->dataToDisplay();
    57.         }
    58.  
    59.         function columns_default($item, $column_name){
    60.             switch ($column_name) {
    61.                 case 'user':
    62.                     return $item[$column_name];
    63.                 case 'date':
    64.                     return $item[$column_name];
    65.                 default:
    66.                     return print_r($item, true);
    67.             }
    68.         }
    69.     }
    Вызов
    Код (Text):
    1.         function addMatrixPage(){
    2.             require_once 'dzh_matrix_list_table.php';
    3.             $dzh_matrix_list_table = new dzh_matrix_list_table();
    4.             $dzh_matrix_list_table->set_columns(array(
    5.                 'user' => __('User'),
    6.                 'date' => __('Date')
    7.             ));
    8.             $dzh_matrix_list_table->prepare_items();
    9.             ?>
    10.             <div class = "wrap">
    11.             <form action="" method="get" name="matrices" id="matrices">
    12.             <input type="hidden" name="page" value="matrix_menu" />
    13.             <?php        
    14.             $dzh_matrix_list_table->display();
    15.             ?>
    16.             </form>    
    17.             </div>
    18.             <?php
    19.         }
     
  4. nospiou

    nospiou Активный пользователь

    С нами с:
    4 фев 2018
    Сообщения:
    2.905
    Симпатии:
    403
    Ну практически. Там еще селект есть нужно выбирать php
     
  5. TillTheDayIDie

    TillTheDayIDie Новичок

    С нами с:
    11 апр 2018
    Сообщения:
    19
    Симпатии:
    0
    PHP:
    1. <?php
    2.     if( ! class_exists( 'WP_List_Table' ) ) {
    3.         require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
    4.     }
    5.    
    6.     class dzh_matrix_list_table extends WP_List_Table{
    7.  
    8.         function __construct(){
    9.             parent::__construct(array(
    10.                 'singular'  => __('Matrices'),
    11.                 'plural'    => __('Matrix'),
    12.                 'ajax'      => false
    13.             ));
    14.         }
    15.  
    16.         function get_columns(){
    17.             return $this->columns;
    18.         }
    19.  
    20.         function set_columns( $args = array() ) {
    21.                 if(count( $this->bulk_actions ) ) {
    22.                     $args = array_merge( array( 'cb' => '<input type="checkbox" />' ), $args );
    23.             }
    24.             $this->columns = $args;
    25.                return $this;
    26.         }
    27.  
    28.         function dataToDisplay(){
    29.             global $wpdb;
    30.             $dataToDisplay = array();
    31.             $users = get_users();
    32.             foreach ($users as $user) {
    33.                 $sql = "SELECT MAX(meta_value) as meta_value FROM wp_usermeta WHERE meta_key = 'postmeta_matrix_id' AND user_id = ".$user->ID;
    34.                 $meta_value = $wpdb->get_row($sql)->meta_value;
    35.                 $postmeta = get_post_meta_by_id($meta_value);
    36.            
    37.                 foreach ($postmeta as $item) {
    38.                     if(is_array($item)){
    39.                         $timestamp = $item['date'];
    40.                     }  
    41.                 }
    42.  
    43.                 $datetimeFormat = 'Y-m-d';
    44.                 $date = new DateTime();
    45.                 $date->setTimestamp($timestamp);
    46.                 $dataToDisplay[] = array('ID' => $user->ID, 'user'=>$user->display_name, 'date' => $date->format($datetimeFormat));
    47.             }  
    48.             return $dataToDisplay;
    49.         }  
    50.  
    51.         function prepare_items(){
    52.             $columns = $this->get_columns();
    53.             $hidden = array();
    54.             $sortable = array();
    55.             $this->_columns_headers = array($columns, $hidden, $sortable);
    56.             $this->items = $this->dataToDisplay();
    57.         }
    58.  
    59.         function columns_default($item, $column_name){
    60.             switch ($column_name) {
    61.                 case 'user':
    62.                     return $item[$column_name];
    63.                 case 'date':
    64.                     return $item[$column_name];
    65.                 default:
    66.                     return print_r($item, true);
    67.             }
    68.         }
    69.     }
    Вызов
    PHP:
    1.         function addMatrixPage(){
    2.             require_once 'dzh_matrix_list_table.php';
    3.             $dzh_matrix_list_table = new dzh_matrix_list_table();
    4.             $dzh_matrix_list_table->set_columns(array(
    5.                 'user' => __('User'),
    6.                 'date' => __('Date')
    7.             ));
    8.             $dzh_matrix_list_table->prepare_items();
    9.             ?>
    10.             <div class = "wrap">
    11.             <form action="" method="get" name="matrices" id="matrices">
    12.             <input type="hidden" name="page" value="matrix_menu" />
    13.             <?php        
    14.             $dzh_matrix_list_table->display();
    15.             ?>
    16.             </form>    
    17.             </div>
    18.             <?php
    19.         }
     
  6. nospiou

    nospiou Активный пользователь

    С нами с:
    4 фев 2018
    Сообщения:
    2.905
    Симпатии:
    403
    Ну вот. Совсем другое дело. А вопрос какой? Или просто информацией делишься?
     
  7. TillTheDayIDie

    TillTheDayIDie Новичок

    С нами с:
    11 апр 2018
    Сообщения:
    19
    Симпатии:
    0
    Хмм, вроде бы в 1 посте писал, не рисуется моя таблица(
     
  8. Sail

    Sail Активный пользователь

    С нами с:
    1 ноя 2016
    Сообщения:
    819
    Симпатии:
    173