Як до WordPress додати колонки до таблиці зі списком коментарів

Як до WordPress додати колонки до таблиці зі списком коментарів

Вітаю. У сьогоднішній статті торкнемося теми коментарів. А саме — як додати до таблиці зі списком коментарів додаткову колонку та вивести в ній кастомні (тобто інші, нестандартні) значення.

Логіка додавання нової колонки до таблиці з коментарями аналогічна до тієї, що використовується при створенні додаткової колонки в таблиці з записами (стандартними або власними). Але у випадку з коментарями нам слід використати такі хуки:

manage_edit-comments_columns — для додавання заголовка / head колонки;
manage_comments_custom_column — для заповнення вмісту осередків таблиці;

Оскільки для написання статті я використовую чисту версію WordPress, встановлену на локальному сервері, мені доведеться створити коментарі вручну або скористатися командою в консолі wp. Якщо ви ще не знайомі з цим інструментом, наполегливо рекомендую почати його використовувати. Адже wp-cli економить купу часу, що в перспективі вимірюється годинами.

Наприклад, створимо 13 коментарів для поста з ID, що дорівнює 13:

wp comment generate --count=13 --post_id=13

Просто, а головне — швидко!

Повернемося до нашого коду. Відкриваємо файл functions.php активної теми й вставляємо до нього наступний код:

add_filter('manage_edit-comments_columns', function($columns)
{
	$columns['custom_col_title'] = 'Custom column';
		
	return $columns;
}, 10);

На вхід функція фільтра приймає масив назв існуючих колонок. У цей масив, під індексом “custom_col_title”, ми додаємо назву нашого стовпця.

Далі переходимо на сторінку коментарів в адмінці, де вже бачимо нову колонку з назвою “Custom column”, але без будь-якого вмісту.

Щоб заповнити осередки таблиці значеннями, трохи нижче вставляємо такий PHP-код:

add_action('manage_comments_custom_column', function($column, $comment_ID)
{
	if($column == 'custom_col_title')
	{
		echo get_comment_meta($comment_ID, 'custom_col_data', true);
	}
}, 10, 2);

Функція хука приймає два параметри:
$column — ключ нашої колонки. Він потрібен, щоб визначити, для якої саме колонки виводити значення. Аналогічно можна змінювати значення й в інших колонках.
$comment_ID — ID поточного коментаря. У нашому випадку ми його використаємо для отримання значення з таблиці метаданих коментарів.

Як було згадано вище, за умови:

if($column == 'custom_col_title')
{
	echo get_comment_meta($comment_ID, 'custom_col_data', true);
}

ми визначаємо, яке значення потрібно відобразити для якої колонки.

Якщо після усіх вищезгаданих маніпуляцій колонка буде порожньою — не засмучуйтесь. Можливо, ви просто не додали в базу значення для потрібного коментаря з ключем “custom_col_data”. Скористайтеся наступним SQL-запитом, лише замініть ID коментаря на той, який у вас є в БД:

INSERT INTO `wp_commentmeta` (`meta_id`, `comment_id`, `meta_key`, `meta_value`) VALUES (NULL, '10', 'custom_col_data', 'Some value');
Пости на схожі теми

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

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

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