ВНИМАНИЕ: Запись на курсы по HTML, CSS, JavaScript, PHP, Python, React, Vue, Laravel и другим фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→
4 of 21 menu
Новый формат обучения! Репетиторство по программированию. Есть еще 3 свободных места! Жми для подробностей.

Таблица 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,
    которая хранит метаданные пользователей