Как сделать таблицу списка wp для пагинации? - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь сделать нумерацию страниц в таблице списка wp, но она показывает 10 страниц с одинаковыми данными. Когда я пытаюсь использовать $ this-> items = $ this-> data, отображается 10 пустых страниц. Может проблема в неправильном вызове $ this-> query ($ orderby, $ order, $ search)? Мой код:

public function query($orderby = '', $order = '', $search = '')
    {
        global $wpdb, $user_ID;
        $data = array();
        $table_name = $wpdb->prefix . 'formularz_rekrutacja';
        //$query_form_value = ('SELECT * FROM ' . $table_name.' ORDER BY imie_kandydata ASC');
        if (!empty($search)) {
            $query_form_value =
                ('SELECT * FROM ' . $table_name . ' WHERE nazwisko_kandydata LIKE "%' . $search . '%"
                 OR imie_kandydata LIKE "%' . $search . '%" OR pesel LIKE "%' . $search . '%" ');
        } else {
            if ($orderby == 'Imię' && $order = 'asc') {
                $query_form_value = ('SELECT * FROM ' . $table_name . ' ORDER BY imie_kandydata ASC');
            } elseif ($orderby == 'Nazwisko' && $order = 'asc') {
                $query_form_value = ('SELECT * FROM ' . $table_name . ' ORDER BY nazwisko_kandydata ASC');
            } elseif ($orderby == 'Nazwisko' && $order = 'asc') {
                $query_form_value = ('SELECT * FROM ' . $table_name . ' ORDER BY nazwisko_kandydata DESC');
            } elseif ($orderby == 'Imię' && $order = 'desc') {
                $query_form_value = ('SELECT * FROM ' . $table_name . ' ORDER BY imie_kandydata DESC');
            } else {
                $query_form_value = ('SELECT * FROM ' . $table_name . ' ORDER BY data_wygenerowania ASC');
            }
        }
        $lists = $wpdb->get_results($query_form_value);
        foreach ($lists as $list) {
            $data[] =
                array(
                    'ID' => $list->id,
                    'bla' => $list->name,
                    'blabla' => $list->first_name,


                );
        }
        return $data;
        //print_r($data);

public function prepare_items()
{
    $per_page = 10;
    $current_page = $this->get_pagenum();
    $total_items = count($this->query($query_form_value));

    // only ncessary because we have sample data
    $this->found_data = array_slice($this->query($query_form_value),(($current_page-1)*$per_page),$per_page);

    $this->set_pagination_args( array(
        'total_items' => $total_items,                  //WE have to calculate the total number of items
        'per_page'    => $per_page                     //WE have to determine how many items to show on a page
    ) );
    $this->items = $this->found_data;


    $orderby = isset($_GET['orderby']) ? trim($_GET['orderby']) : "";
    $order = isset($_GET['order']) ? trim($_GET['order']) : "";

    $search = isset($_POST['s']) ? trim($_POST['s']) : "";


    $this->items = $this->query($orderby, $order, $search);
    $columns = $this->get_columns();
    $hidden = $this->get_hidden_columns();
    $sortable = $this->get_sortable_columns();
    $this->_column_headers = array($columns, $hidden, $sortable);
}

кстати. Моя сортировка также не работает должным образом, сортировка только по первому щелчку всегда по возрастанию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...