# WP_LIST_COMMENTS() │ WP 2.7.0
Функция wp_list_comments() используется для вывода комментариев на конкретном посте. Она часто применяется в шаблоне comments.php.
## Рабочие хуки функции
- wp_list_comments_args
## Возвращаемое значение
- null или String. Если аргумент echo установлен в true, результат не выводится.
- Если комментариев нет, также возвращается null.
- В противном случае возвращается HTML-список комментариев.
## Использование
### Параметры функции
```php
wp_list_comments( $args, $comments );
$args(строка|массив) — параметры форматирования. По умолчанию: пустой массив.
Подробности параметров:
-
walker (object)— экземпляр класса Walker для вывода комментариев. По умолчанию:null. -
max_depth (int)— максимальная глубина комментариев. По умолчанию:''. -
style (string)— стиль вывода списка. Можно использовать 'ul', 'ol' или 'div'. При установке 'div' разметка списка не добавляется. По умолчанию: 'ul'. -
callback (callable)— функция обратного вызова для вывода комментария. По умолчанию:null. -
end-callback (callable)— функция обратного вызова, вызываемая в конце. По умолчанию:null. -
type (string)— тип комментариев для вывода. Можно использовать 'all', 'comment', 'pingback', 'trackback', 'pings'. По умолчанию: 'all'. -
page (int)— ID страницы для вывода комментариев. По умолчанию:''. -
per_page (int)— количество комментариев для вывода на странице. По умолчанию:''. -
avatar_size (int)— высота и ширина изображения аватара. По умолчанию:32. -
reverse_top_level (true|false)— порядок вывода комментариев. Еслиtrue, выводятся новейшие комментарии первыми. По умолчанию:null. -
reverse_children (true|false)— выводить ли дочерние комментарии в обратном порядке. По умолчанию:null. -
format (string)— формат вывода списка комментариев. Принимает 'html5', 'xhtml'. Если тема поддерживает это. По умолчанию: 'html5'. -
short_ping (true|false)— выводить ли короткие пинги. По умолчанию:false. -
echo (true|false)— выводить результат или возвращать его. По умолчанию:true. -
$comments (WP_Comment[])— массив объектов WP_Comment. По умолчанию:null.
Примеры
Пример 1: Использование параметра Walker и создание собственного класса
Пример файла comments.php:
new TwentyTwenty_Walker_Comment(),
'avatar_size' => 120,
'style' => 'div',
] );
?>
Определение класса Walker:
<= $tag ?> id="comment-" has_children ? 'parent' : '', $comment ); ?>>
comment_approved ) {
?>
'div-comment',
'depth' => $depth,
'max_depth' => $args['max_depth'],
'before' => '',
'after' => '',
)
)
);
$by_post_author = twentytwenty_is_comment_by_post_author( $comment );
if ( $comment_reply_link || $by_post_author ) {
?>
Пример 2: Вывод комментариев с использованием функции обратного вызова
При настройке внешнего вида каждого комментария вы можете использовать параметр callback, где указываете название функции, создающую нужный вывод:
'comment',
'callback' => 'mytheme_comment',
] );
?>
Создайте функцию mytheme_comment(), которая будет описывать, как выглядят комментарии. Эту функцию можно добавить в файл functions.php или в тот же файл, где находится данный код (обычно это comments.php):
<= $tag . $classes; ?> id="comment-">
comment_approved == '0' ) { ?>
$add_below,
'depth' => $depth,
'max_depth' => $args['max_depth']
)
)
); ?>
Важно: Функция обратного вызова должна содержать только открывающий тег
<li>, она не должна его закрывать. См. описание параметров для подробностей.
Пример 3: Стандартное использование
Функция для отображения списка комментариев используется в файле шаблона comments.php. Деревообразное представление и пагинация комментариев управляются через панель администратора в разделе Настройки > Обсуждение.
Или можно настроить параметры:
$cpage = get_query_var( 'cpage' ) ? get_query_var( 'cpage' ) : 1;
wp_list_comments(
[
'avatar_size' => 60,
'short_ping' => true,
'type' => 'comment',
'callback' => 'ic_comment_list',
'per_page' => get_option( 'comments_per_page' ),
'page' => $cpage,
'reverse_top_level' => get_option( 'default_comments_page' ) === 'oldest' ? false : true,
]
);
Пример 4: Вывод комментариев для конкретного поста
Если вы хотите вывести список комментариев только для конкретного поста, то вам нужно сначала получить эти комментарии и передать их как второй параметр функции wp_list_comments().
XXX,
'status' => 'approve' // только одобренные комментарии
] );
// Генерируем список полученных комментариев
wp_list_comments( [
'per_page' => 10, // Пагинация комментариев - 10 комментариев на странице
'reverse_top_level' => false // Последние комментарии в начале
], $comments );
?>
Пример 5: Уведомление "Комментарий ожидает модерации"
Если вы используете WordPress 4.9.6 или выше и уведомление "Комментарий ожидает модерации" не отображается, выполните следующие действия:
- Перейдите в Настройки > Обсуждение и включите "Показать флажок согласия на использование cookies для комментариев".
- После активации флажка он отобразится в форме комментариев с текстом: "Сохраните мое имя, электронную почту и сайт в этом браузере при следующем комментировании."
Если вы хотите настроить это поле флажка, используйте следующий код:
$comment_form = array(
'fields' => array(
'cookies' => '',
),
);
comment_form( $comment_form );
Примечания
- Смотрите: WP_Query::$comments
- Глобальные переменные:
- WP_Query.
$wp_query— объект WordPress Query. - Int.
$comment_alt - Int.
$comment_depth - Int.
$comment_thread_alt - true|false.
$overridden_cpage - true|false.
$in_comment_loop
- WP_Query.
Изменения
- Начиная с версии 2.7.0.