Комментарии в 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мотрите другие статьи:
Была ли статья полезной?
Была ли эта статья полезна? Есть вопрос?
хостинг для сайтов
Закажите недорогой хостинг Заказать

всего от 290 руб