Як створити таблицю на панелі адміністратора WordPress. Частина 2.2.

Як створити таблицю на панелі адміністратора WordPress. Частина 2.2.

Доброго часу доби, шановні читачі блогу!
Давайте продовжимо розбирати наш плагін таблиці «по кісточках». У цій частині ми розглянемо наш клас таблиці «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. Завантажити можна за цим посиланням.

Пости на схожі теми

З вашим WordPress сайтом проблеми? потрібний додатковий функціонал? нестандартний плагін чи згорнути нову сторінку?
Тоді напишіть мені через форму зворотного зв'язку, і я намагатимусь вам допомогти.

Напишіть коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *