Таблица wp_commentmeta
Таблица wp_commentmeta
(или {префикс}_commentmeta
) является частью структуры баз данных WordPress и служит для хранения произвольных метаданных, связанных с комментариями. Эта таблица использует ту же модель "ключ-значение", что и wp_postmeta
для записей и wp_usermeta
для пользователей.
Поля
Поле | Тип данных | Описание |
---|---|---|
meta_id |
bigint(20) unsigned |
Уникальный идентификатор записи метаданных (первичный ключ с автоинкрементом). |
comment_id |
bigint(20) unsigned |
Внешний ключ, который связывает метаданные с конкретным комментарием. Ссылается на поле comment_ID в таблице wp_comments .
|
meta_key |
varchar(255) |
Ключ (имя) метаданных. Определяет, какая именно информация хранится в поле meta_value . Например, rating , akismet_history или wpcom_user_id .
|
meta_value |
longtext |
Значение метаданных. Содержит произвольные данные, связанные с ключом meta_key и комментарием comment_id . Может хранить строки, числа, сериализованные массивы или объекты.
|
Как это работает
Когда пользователь оставляет комментарий, WordPress создает запись в таблице wp_comments
. Если к этому комментарию нужно прикрепить дополнительную информацию, которая не входит в стандартный набор полей (например, рейтинг, данные для модерации, кастомные флаги), она сохраняется в wp_commentmeta
.
Плагины активно используют эту таблицу для расширения функционала комментариев. Например, плагины рейтингов могут хранить оценку комментария в паре meta_key = 'rating'
и meta_value = '5'
. Антиспам-плагины (вроде Akismet) сохраняют историю проверок и результаты.
Для работы с метаданными комментариев WordPress предоставляет функции-обертки, такие как add_comment_meta()
, get_comment_meta()
, update_comment_meta()
и delete_comment_meta()
. Они автоматически выполняют правильные SQL-запросы к таблице.
Важно отметить, что один комментарий может иметь несколько записей метаданных с одинаковым ключом meta_key
, если это предусмотрено логикой плагина или темы. В этом случае функция get_comment_meta()
вернет массив всех значений.
Пример SQL-запроса
Получить все метаданные для комментария с ID 42 можно следующим запросом:
SELECT meta_key, meta_value
FROM wp_commentmeta
WHERE comment_id = 42;
Найти все комментарии, имеющие определенное мета-поле (например, рейтинг):
SELECT c.*, cm.meta_value as rating
FROM wp_comments c
INNER JOIN wp_commentmeta cm ON (c.comment_ID = cm.comment_id)
WHERE cm.meta_key = 'rating'
AND cm.meta_value = '5';
Смотрите также
-
таблицу
wp_comments
,
которая хранит основные данные комментариев -
таблицу
wp_postmeta
,
которая хранит метаданные записей -
таблицу
wp_usermeta
,
которая хранит метаданные пользователей