Изучение WP_Comment_Query

Изучение WP_Comment_Query

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

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

<?php
$args = array(
    // аргументы для запроса.
);
$comments_query = new WP_Comment_Query;
$comments = $comments_query->query( $args );
if ( $comments ) {
    foreach ( $comments as $comment ) {
        // Тут можете как угодно обработать каждый комментарий.
    }
} else {
    // На случай отсутствия комментариев напишите сообщение.
}
?>

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

Свойства и методы класса 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 комментариев (а не по дате). Вот как это можно сделать:

<?php
// Получаем глобальный объект `$wp_query`...
global $wp_query;
// ...и используем для получения ID автора.
$post_author_id = $wp_query->post->post_author;
// Устанавливаем аргументы.
$args = array (
    'user_id' => $post_author_id,
    'orderby' => 'comment_ID'
);
// Настраиваем запрос.
$my_comment_query = new WP_Comment_Query;
$comments = $my_comment_query->query( $args );
// Проверяем комментарии.
if ( $comments ) {
    // Собираем комментарии в список.
    echo '<ul class="author-comments">';
        // Проходимся по ним циклом.
        foreach( $comments as $comment ) {
            echo '<li>' . $comment->comment_content . '</li>';
        }
    // Закрываем список.
    echo '</ul>';
} else {
    // Сообщение если комментарии не найдены.
    echo '<p class="no-author-comments">' . __( 'The post author didn\'t post any comments.', 'tutsplus' ) . '</p>';
}
?>

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

Заключение

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

Автор: Barış Ünver

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

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

Хотите быстро научиться создавать сайты и блоги на WordPress с уникальным дизайном?

Получите самую полную в Рунете бесплатную систему обучения создания сайтов на WordPress “Уникальный сайт с нуля”

Получить

Метки: ,

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

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree