Вітаю. У сьогоднішній статті торкнемося теми коментарів. А саме — як додати до таблиці зі списком коментарів додаткову колонку та вивести в ній кастомні (тобто інші, нестандартні) значення.
Логіка додавання нової колонки до таблиці з коментарями аналогічна до тієї, що використовується при створенні додаткової колонки в таблиці з записами (стандартними або власними). Але у випадку з коментарями нам слід використати такі хуки:
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');
