Как в 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);
}

мы определяем для какой колонки какое значение нужно отобразить.

Если после выполненных выше манипуляций колонка будет пустая. Не расстраивайтесь, возможно вы просто не добавили в БД значения для нужного комментария c ключом “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 сайтом проблемы? нужен дополнительный функционал? нестандартный плагин или сверстать новую страницу?
Тогда напишите мне через форму обратной связи, и я постараюсь вам помочь.

Оставить комментарий

Ваш адрес email не будет опубликован.