Публикация в группе: Полезное для WordPress

Добавлено в закладки: 3

Как понял из последних комментов на этом сайте, люди хотят вывести все комментарии пользователя, но как это сделать они не знают. Всвязи с этим, решил написать сей пост который решит данный вопрос.

Решать данную проблему будет по следующей схеме:

  1. Получим все комментарии пользователя из БД
  2. Выведем комментарии пользователя, обработав результат выборки через цикл

Таков примерный план.

Сразу будем оформлять все это дело в функцию, чтобы потом мы могли удобно ее использовать:

Итак, для того чтобы выбрать из БД все комментарии пользователя сделаем такой запрос:

Так как мы будем использовать данный код на странице пользователя, то получаем данные об этом пользователе и выводим его ID в переменную $author_lk. Далее с помощью запроса к БД получаем все комментарии пользователя, используя эту переменную в качестве фильтра.
Ок, комментарии получили, теперь полученный результат надо прогнать через цикл и вывести таким образом комментарий за комментарием. Добавляем в нашу функцию вывод комментариев:
 

Данный код уже рабочий и его можно использовать, но если остановиться тут, то на вашем сайте может возникнуть одна проблема и связана она будет с тем, что каждый раз когда будет загружаться страница этого пользователя из БД будут запрашиваться все его комментарии. А если у этого пользователя 100 тыс. комментариев?! Представьте какая нагрузка ляжет на ваш сервер. Ничего хорошего. Поэтому нам надо предусмотреть ограничение в количестве вывода комментариев пользователя. Я говорю о разбиении общего количества комментариев на несколько страниц. Если мы решим это реализовать, то нам надо будет подумать еще и о постраничной навигации между страницами комментариев пользователя.

Ну что ж, для начала нам надо решить сколько комментариев будет выводится на странице. Для этого введем переменную $inpage, в которой будем лежать максимально количество комментариев на одной странице.
Затем мы должны получить общее количество комментариев в БД этого пользователя. Для этого через запрос к БД посчитаем комментарии пользователя, а в запросе на выборку комментариев установим лимит на количество выборки:

В переменной $start будет находится количество комментариев которое надо пропустить перед выборкой, таким образом мы указываем с какого значения начинать выборку.
Потом считаем количество страниц, которое у нас получится с текущим значением переменной $inpage и общим количеством комментариев которое мы получили в переменную $count_comments.

И наконец, вставляем код постраничной навигации, который я написал ранее для использования в шорткодах плагина Wp-Recall:

 
Полный код нашей рабочей функции будет выглядеть так:

Вставляем данный код в файл functions.php используемого шаблона.
Теперь чтобы вывести комментарии пользователя на его странице нам надо просто удалить в файле author.php цикл вывода записей пользователя и вставить вместо него нашу функцию:

Вот в общем то и все)

61

Автор публикации

не в сети 6 часов

Андрей CS

10k

пока занят

Комментарии: 1771Публикации: 410Регистрация: 30-11--0001Продаж/Покупок: 16573/114