Кастомизация комментариев WordPress

Немного о настройке вывода комментариев в WordPress. Довольно часто сталкиваюсь с тем, что верстальщики придумывают некие нестандартные для WordPress конструкции для вывода комментариев. В каких-то случаях html-конструкцию можно привести стандартному формату поработав с css, заменив какие-то теги, но это не всегда быстрый и простой путь.

Древовидные/вложенные комментарии

Одна из сложностей — это вывод так называемых nested комментариев (древовидных или вложенных), т.е. комментариев, которые написаны в ответ на чей-то и должны отображаться таким образом, чтобы визуально было понятно, что это ответ. Количество nested комментариев лучше всего ограничить до 2х, иначе могут возникнуть проблемы с их корректным отображением, т.к. в вёрстке обычно не предусмотрено наличие более двух уровней и многоуровневые обсуждение — явление довольно редкое. Ограничить nested комментарии можно тут: Настройки — Обсуждение — Разрешить древовидные (вложенные) комментарии глубиной уровней.

Вывод комментариев

Осуществляется при помощи функции wp_list_comments() с указанием дополнительных параметров, например:

Функция для вывода комментариев обозначается как callback=my_comment

Функция для закрытия тегов или вывода другой дополнительной информации: end-callback=end_comment

Обе функции можно расположить либо в comments.php либо в functions.php

Стандартные функции вывода можно взять здесь: codex.wordpress.org Подробное описание на русском: wp-kama.ru

Для понимания того, что возвращает стандартная функция wordpress можно воспользоваться var_damp’ом:

Она вернёт что-то подобное:

Описание элементов доступно тут: codex.wordpress.org

При помощи стандартных условий можно легко настроить вывод того или иного элемента:

Отдельно нужно сказать о функции, которая закрывает каждый комментарий, её можно и не дописывать, но в особых случая она может выглядеть следующим образом:

Особые случаи

Если не получается изменить вывод комментариев стандартными средствами, то можно использовать метод нестандартный 🙂 А именно, перед отображением данных поработать с ними в буфере при помощи функций ob_start() и ob_get_clean() Это будет выглядеть как-то так:

Но я думаю, что этот метод подойдёт только для тех, кто не хочет разобраться с тем как работают стандартные функции…

Дополнительно

Список стандартных wordpress функций для работы с комментариями, пингами и т.п. элементами: wp-kama.ru