Доброго часу доби, шановні читачі блогу!
Давайте продовжимо розбирати наш плагін таблиці «по кісточках». У цій частині ми розглянемо наш клас таблиці «Plance_Table_Lessons2».
Відкривши наш клас, першим методом можна побачити «prepare_items()». Він відповідає за підготовку даних для відображення. Його виклик є обов’язковим. А сам метод має такий код:
public function prepare_items()
{
//Sets
$per_page = $this -> get_items_per_page('plance_per_page', 10);
/* Отримуємо дані для формування таблиці */
$data = $this -> table_data();
/* Встановлюємо дані для пагінації */
$this -> set_pagination_args( array(
'total_items' => count($data),
'per_page' => $per_page
));
/* Ділимо масив на частини для пагінації */
$data = array_slice(
$data,
(($this -> get_pagenum() - 1) * $per_page),
$per_page
);
$this -> _column_headers = $this -> get_column_info();
/* Встановлюємо дані таблиці */
$this -> items = $data;
}
рядком нижче ми отримуємо кількість записів для нашої пагінації. Форму налаштування ми створювали у попередній статті. Дивіться метод «showScreenOptions».
$per_page = $this -> get_items_per_page('plance_per_page', 10);
дані про налаштування пагінації для кожного користувача індивідуальні. Вони зберігаються у таблиці «wp_usermeta», а сам запис можна знайти за ключем «plance_per_page».
У цьому уроці ми трохи скоротили наш код і замінили:
$this -> _column_headers = array( $this -> get_columns(), $this -> get_hidden_columns(), $this -> get_sortable_columns() );
на:
$this -> _column_headers = $this -> get_column_info();
що виглядає елегантніше 🙂
Редагуємо метод «get_columns()», який відповідає за назви наших колонок. І додаємо першим елементом масиву чекбокс для групових дій над записами:
public function get_columns()
{
return array(
'cb' => '<input type="checkbox" />',
....
);
}
Тепер нам потрібно створити додаткову колонку для чекбоксів наших записів. Це реалізується в окремому методі:
function column_cb($item)
{
return '<input type="checkbox" name="id[]" value="'.$item['ex_id'].'" />';
}
описувати метод, думаю, немає сенсу — він досить простий.
Також, нам потрібно додати посилання на сторінки редагування та видалення записів. Для цього ми створимо окремий метод із назвою колонки:
function column_ex_title($item)
{
return $item['ex_title'].' '.$this -> row_actions(array(
'edit' => '<a href="?page='.$_REQUEST['page'].'&action=edit&book='.$item['ex_id'].'">редагувати</a>',
'delete' => '<a href="?page='.$_REQUEST['page'].'&action=delete&book='.$item['ex_id'].'">видалити</a>',
));
}
у цьому випадку, до назви нашого запису за допомогою методу «row_actions()» ми додаємо два посилання. Де ключ — унікальний ідентифікатор посилання, а значення — саме посилання або якийсь текст. Кількість посилань може бути довільною. Як формувати URL — справа особиста.
І останній метод, який ми розглянемо в цій статті — це метод, що формує випадаючий список для групових дій:
function get_bulk_actions()
{
return array(
'delete' => __('delete', 'plance'),
'lock' => __('lock', 'plance'),
'unlock' => __('unlock', 'plance'),
);
}
Як бачите, все досить просто. Достатньо потренуватись день-два — і все стане зрозуміло.
А в наступних статтях цього циклу ми розглянемо взаємодію таблиці з даними з бази даних.
UPD. 2021-06-04. Додав на GitHub приклад реалізації таблиці в адмінці WP. Завантажити можна за цим посиланням.
