Лезть в код или не лезть? Раньше мы уже говорили, что форма комментариев немного сложна, и поэтому создатели все максимально упростили.
Функция вызова комментариев простая и не имеет параметров
Выглядит просто, но делает очень много. Фактически она создает огромное количество html кода и использует кучу php кода. Т.к. эта функция генерирует весь готовый html код, то нам придется иметь с ним дело без возможности как-то отрегулировать или настроить использованием параметров. Это может быть определенной проблемой, с учетом того, что мы не очень можем этот html код изменить. Не нравятся классы div? Не хотите использовать граватары? Желаете изменить порядок вывода строк?
Со всем этим придется смириться и скрывать ненужные вещи с помощью css. С этой точки зрения вам нужно будет определиться - по какому пути предпочтений вы пойдете:
wp_list_comments
- легко использовать
- встроенный функционал комментирования
- встроенный функционал разбития на страницы
- встроенный функционал древовидного отображения
- css классы по умолчанию для базовых задач
пользовательская функция комментариев
- абсолютный полный контроль над всем
- стандартные и пользовательские css классы
- наличие плагинов для добавления нужного функционала
Выбор метода формирования комментариев зависит от множества факторов. В общем, мы рекомендуем использовать wp_list_comments и не морочить голову. Если же вам нужно сделать что-то свое, особенное и специфическое, с желаемым функционалом и возможностями, и это желание подкрепляется знаниями, то использование пользовательских циклов даст возможность это все воплотить.
Кроме этого есть старый добрый метод вывода комментариев с помощью цикла foreach, поэтому нам еще есть с чем разобраться.
wp_list_comments() или пользовательский цикл?До версии 2.7 цикл вывода комментариев был на базе запросов к базе данных и отображался несколько извилистым, но хорошо понятным путем.
Затем комментарии были обогащены дополнительным функционалом — постраничной навигацией и древовидной вложенностью. Эти возможности активировались через админку, и цикл foreach был заменен на уже показанную функцию wp_list_comments. Однако этот цикл по прежнему остается работоспособен, правда по понятной причине не поддерживая дополнительный функционал.
Хотя wp_list_comments и не выглядит как цикл, но она делает все тоже самое, повторяет раз за разом запросы и вывод комментариев, пока они не закончатся, размечая их соответствующими тегами.
Обычно готовый хтмл код одного комментария выглядит примерно так:
Спасибо, у вас супер сайт!
Как видно, цикл вывода комментария содержит картинку-граватар, несколько дивов, много разных css классов, ссылку на автора и собственно текст комментария. Если это вас устраивает — то это хорошо, больше ничего делать и не нужно.
В этом случае вы можете протянуть свои руки только к следующим доступным параметрам wp_list_comments:
- размер аватары по умолчанию 32 пикселя
- стили css — используя их названия можно изменить параметры на нужные
- стиль вывода списка комментариев style. По умолчанию комментарии выводятся тегами неупорядоченного списка
- , но если вы вместо этого хотите использовать упорядоченный список , то используйте такой параметр
- тип type — строковый параметр, отвечающий за отображаемые комментарии. Доступные параметры — all, comment, trackback, pingback, pings. Pings означает, что будут выводиться вместе и трекбеки, и пингбеки. По умолчанию параметр равен all, т.е. все комментарии отображаются.
- текст ответа reply_text — определяющий, что будет написано на ссылке ответа на комментарий, обычно «Ответить»
- текст авторизации login_text — отображается в случае, если для ответа необходимо авторизироваться на сайте, обычно «Авторизируйтесь для комментирования»
- callback — имя пользовательской функции для отображения комментариев.
- Дополнительные параметры, доступны
Это немного, но в большинстве случаев достаточно для минимально необходимых модификаций. Если нужно больше, то придется использовать пользовательский цикл либо вмешиваться в php код, написанный в comments.php, либо добавлять нужный функционал в functions.php.
Шаманим в functions.phpДля начала укажем в comments.php, что мы будем использовать свою пользовательскую функцию
Теперь создадим в functions.php свою пользовательскую функцию