Изучение WP_Comment_Query

Изучение WP_Comment_Query

От автора: в этом уроке мы разберем класс WP_Comment_Query. Впервые данный класс появился в версии 3.1 и выполнял почти всю грязную работу по вытягиванию комментариев из базы данных WordPress. Класс работает с двумя таблицами wp_comments и wp_commentmeta.

Ниже показан шаблон запроса из класса WP_Comment_Query:

Легко, не правда ли? Чуть позже рассмотрим пример, а пока что заглянем под капот.

Свойства и методы класса WP_Comment_Query

Так как в классе очень много свойств (публичные переменные класса) и методов (публичные функции), я разобью их все на две мини секции.

Свойства WP_Comment_Query

В отличие от класса WP_Query, который насчитывает больше 30 свойств (25 из них эквиваленты условных комментариев), в WP_Comment_Query всего 5 свойств:

$request: Строка с SQL-запросом.

$meta_query: массив для создания «мета запроса» с помощью класса WP_Meta_Query.

$date_query: массив для создания «date-запроса» с помощью класса WP_Date_Query.

$query_vars: массив с переменными для запроса.

$comments: массив полученных комментариев.

Единственный метод WP_Comment_Query

Все верно, в классе WP_Comment_Query всего один метод query(). Метод query() выполняет запрос в базу данных. В качестве аргумента указываются параметры, их мы рассмотрим чуть ниже. А сейчас рассмотрим, что же мы получаем после выполнения метода в наш массив:

comment_ID: ID комментария.

comment_post_ID: ID поста.

comment_author: Имя автора комментария.

comment_author_email: email адрес автора комментария.

comment_author_url: адрес сайта автора комментария.

comment_author_IP: IP-адрес комментария.

comment_date: дата комментария.

comment_date_gmt: дата комментария в GMT формате.

comment_content: текст комментария.

comment_karma: неиспользуемые поля для каждого комментария —нужны для различных плагинов.

comment_approved: Статус проверки комментария.

comment_agent: браузер автора комментария.

comment_type: тип комментария pingback или trackback.

comment_parent: Ответы на комментарии, ID родительского комментария. Если комментарий верхнего уровня, то значение будет 0.

user_id: 0 если автор не зарегистрировался на сайте или ID пользователя сайта.

А вот теперь рассмотрим параметры класса WP_Comment_Query.

Параметры WP_Comment_Query

Есть 34 параметра, только не пугайтесь. По их именам можно понять, зачем они нужны.

author_email (string): email адрес автора комментария.

author__in (array): ID автора для запроса.

author__not_in (array): ID автора для исключения из запроса.

post_author__in (array): То же самое что author__in.

post_author__not_in (array): То же самое что author__not_in.

include_unapproved (array): массив ID пользователей или email адресов, чьи комментарии должны быть вытянуты в независимости от статуса.

fields (string): Поля комментариев. Принимается только поле ‘id’, используется для получения ID комментария.

comment__in (array): ID комментариев для запроса.

comment__not_in (array): ID комментариев для исключения из запроса.

karma (integer): «карма» используется для поиска похожих комментариев. (Вспомните comment_karma из верхней главы)

number (integer): максимальное число возвращаемых комментариев.

offset (integer): количество комментариев в запросе.

orderby (string or array): статус комментария массив статусов для результата запроса. Принимает все ключи возвращенные методом query(), а также ‘meta_value’, ‘meta_value_num’, значение $meta_key, FALSE, пустой массив или ‘none’. (Последние три отключают сортировку в запросе.)

order (string): Сортировка полученных комментариев—’ASC’ по возрастанию или ‘DESC’ по убыванию. (По умолчанию: ‘DESC’)

parent (integer): ID родительского комментария для дочерних.

post_id (integer): ID поста для полученных комментариев. (По умолчанию: 0)

post__in (array): ID постов для включения их в результат запроса.

post__not_in (array): ID постов для исключения их из результата запроса.

post_author (integer): ID автора поста для ограничения результата.

post_name (string): Заголовок статьи для получения комментариев поста.

post_parent (integer): ID родительского поста для получения его комментариев.

post_type (string): Тип поста.

post_status (string): Статус поста.

status (string): Статус комментария. Принимаются ‘hold’, ‘approve’, ‘all’ или пользовательский статус. (По умолчанию: ‘all’)

type (string or array): Тип комментария или массив типов. Принимается ‘comment’, ‘pings’ (pingbacks и trackbacks) или пользовательский тип.

type__in (array): Типы комментариев для запроса.

type__not_in (array): Типы комментариев для исключения из запроса.

user_id (integer): ID пользователя для поиска комментариев определенного пользователя.

search (string): Поисковое выражение для поиска комментариев.

count (boolean): Возвращает количество комментариев (TRUE) или массив комментариев (FALSE). (По умолчанию: FALSE)

meta_key (string): Пользовательский мета ключ для поиска комментариев.

meta_value (string): Пользовательское мета значение для поиска комментариев.

meta_query (array): Массив выражений класса WP_Meta_Query (о них мы поговорим в следующей статье).

date_query (array): Массив выражений класса WP_Date_Query (в следующей статье). (По умолчанию: NULL)

Заметьте: Значения по умолчанию у всех параметров пустые, если не указано ничего другого.

Пример для понимания принципа работы WP_Comment_Query

Данная статья не была бы полной без примера, так ведь? Так что давайте придумаем простенький сценарий использования данного класса. Вам нужно получить все комментарии автора поста и отсортировать список по ID комментариев (а не по дате). Вот как это можно сделать:

Подсказка: Если вы хотите использовать для создания запросов GUI, воспользуйтесь WP_Comment_Query Generator.

Заключение

Как я уже говорил, наша серия подходит к концу. В следующей части мы разберем сразу два класса WP_Meta_Query и WP_Date_Query. Хотели бы что-нибудь добавить к этой статье? Оставляйте свои мысли в комментариях. И не забудьте поделиться статьей с друзьями, если она вам понравилась.

Автор: Barış Ünver

Источник: //code.tutsplus.com/

Редакция: Команда webformyself.

Метки: ,

Похожие статьи:

Комментарии Вконтакте: