Комментарии в WordPress (часть 1)

Приведём пример минимального содержания файла "comments.php" для вывода комментариев в WordPress:
<?php
if( have_comments() ){ 
   if( get_comments_number() ){ ?>
      Количество комментариев: <?=get_comments_number()?> <br>
      <ol>
         <?php
            wp_list_comments(
               array(
                  'style' => 'ol', // формировать список элементов для тега <ol>
                  'per_page' => 10, // количество комментариев на странице
                  'avatar_size' => 74, // размер аватара пользователя
               )
            );
         ?>
      </ol>
   <?php }else{?> 
      Нет комментариев к этой публикации
   <?php }?> 
<?php }?>
В этом коде можно отметить использование трёх функций, которые связаны с выводом комментариев: wp_list_comments, get_comments_number, have_comments. Рассмотрим их по порядку появления в коде.

Возможность комментирования "have_comments"

С помощью функции "have_comments" можно проверить возможность оставлять комментарии у текущей записи (страницы). Функция работает на основе глобальной переменной "$wp_query" и не имеет аргументов.

Функция возвращает логическое "true" или "false" в зависимости наличия или отсутствия возможности оставлять комментарии на текущей странице.

Количество комментариев "get_comments_number"

Количество комментариев на странице можно получить с помощью функции "get_comments_number". У функции есть только один параметр - ID публикации. Если его не указать, то будет использованы данные по количеству комментариев из текущей страницы (из глобальной переменной "$post->comment_count").
$comments_count = get_comments_number( $post_id );
Функция возвращает число (количество комментариев).

Вывод списка комментариев "wp_list_comments"

Функция "wp_list_comments" выводит список комментариев для записей, постов или страниц. У функции есть два параметра:
wp_list_comments( $args, $comments );
Первый параметр - это массив аргументов, определяющий выборку комментариев. Второй параметр "$comments" - это массив, которые возвращается функцией "get_comments". В нашем примере мы не использовали второй параметр, потому что выводили комментарии в файле "comments.php", до вызова которого WordPress получает массив комментариев из базы. В будущей части статьи мы рассмотрим функцию "get_comments" подробнее, а сейчас мы продолжим с нашим упрощённым примером.
Перед использованием функции "wp_list_comments" вне файла "comments.php" необходимо вызвать функцию "comments_template", чтобы получить выборку комментариев из базы. Если её не вызвать, то функция "wp_list_comments" ничего не распечатает.
Первый аргумент функции "wp_list_comments" является массивом. Рассмотрим все его возможные ключи и значения, которые влияют на выборку комментариев:
Название Тип данных Описание
walker объект Объект класса, через который формируется список комментариев. По умолчанию: new Walker_Comment
max_depth число Глубина вложенности комментариев (работает если если включены древовидные комментарии в панели администрирования). По умолчанию: 5
style строка Какой тег используется для оборачивания комментариев (обрамляет функцию). Возможные значения: 'div', 'ul' или 'ol' (по умолчанию). К примеру, если указать списки 'ol' или 'ul', то необходимо ставить их вокруг функции:

<ol>
<?php wp_list_comments(
   array('style' => 'ol')
); ?>
</ol>
callback строка Название функции для формирования вывода каждого комментария. Функция должна содержать только открывающий тег (к примеру, <ol>), а закрывающий тег (</ol>) WordPRess пишет автоматически. По умолчанию: нет функции.
end-callback строка Название функции для закрытия обрамляющего тега каждого комментария. Функция должна выводить закрывающий тег (к примеру, </ol>) WordPRess пишет автоматически. По умолчанию: нет функции.
type строка Тип комментариев для отображения: 'all', 'comment', 'trackback', 'pingback' или 'pings'. Последняя 'pings' включает в себя 'trackback' и 'pingback'. По умолчанию: all
per_page число Количество комментариев на странице. По умолчанию: 50
page число Номер страницы для постраничной навигации, комментарии с которой необходимо вывести.
avatar_size число Размер аватара в пикселях. По умолчанию: 32
reverse_top_level логический Включить ли обратную сортировку по дате (только для родительских комментариев, не влияет на дочерние). По умолчанию: false
reverse_children логический Включить ли обратную сортировку по дате для дочерних комментариев. По умолчанию: false
reply_text строка Текст на кнопке "ответить". Текст используется в функции: get_comment_reply_link(). По умолчанию: 'reply'
login_text строка Текст предупреждения, если комментарии в этом блоке могут оставлять только зарегистрированные пользователи. По умолчанию: 'Log in to Reply'
echo логический Распечатывать ли HTML код или возвращать для обработки в переменную. По умолчанию: 'true' (выводить)
Обратим особое внимание на ключи "page" и "per_page". Если не передать в массиве ключ "page", то параметры "page" и "per_page" будут приравнены к в 0.

Если нужно вывести все комментарии (без разбивки на страницы), то необходимо указать: page=1 и per_page=0.

Если в ключе "page" указать пустую строку '' и опция get_option( 'page_comments' ) включена, то количество комментариев будет взято из опции get_query_var( 'comments_per_page' ).

Если значение параметров page или per_page не равны тем что указаны в переменной $wp_query: get_query_var('cpage') и get_query_var('comments_per_page'), то будет сделан дополнительный запрос к базе на получение всех комментариев текущей записи.
Ключи "callback" и "end-callback" разделены, чтобы правильно выводить древовидные комментарии (чтобы не ставить закрывающий тег, если дерево ещё не закончилось).
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Была ли эта статья полезна? Есть вопрос?
Cмотрите другие статьи: