Функция comments_template() предназначена для загрузки шаблона комментариев на странице записи. Она обеспечивает вывод всех комментариев к посту, а также отображение формы для добавления новых комментариев.
comments_template( $file = '/comments.php', $separate_comments = false );
Параметры
- $file (строка, необязательный): Путь к файлу шаблона комментариев относительно корня темы. По умолчанию
/comments.php. - $separate_comments (булево, необязательный): Определяет, следует ли разделять комментарии по типам (обычные комментарии, трекбеки и пинги). По умолчанию
false.
Описание
Функция comments_template() подключает файл шаблона комментариев из папки темы, который по умолчанию называется comments.php. Если данного файла в теме нет, будет использован стандартный шаблон из ядра WordPress, расположенный по адресу /wp-includes/theme-compat/comments.php.
Функция не выводит ничего, если вызвана на странице, которая не является записью (is_singular() вернет false), либо если у записи нет комментариев и они закрыты для добавления. Выводимый HTML-код зависит от содержимого файла comments.php.
Важно
Функция выполняет ключевую операцию: извлекает комментарии из базы данных и сохраняет их в глобальную переменную, что позволяет функции wp_list_comments() корректно выводить комментарии.
Вы можете использовать хук comments_template_query_args для изменения параметров запроса комментариев.
Глобальные переменные, используемые функцией
- $withcomments (bool)
- $wp_query (WP_Query)
- $post (WP_Post)
- $wpdb (wpdb)
- $id (int)
- $comment (WP_Comment)
- $user_login (string)
- $user_ID (int)
- $user_identity (string)
- $overridden_cpage (bool)
Хуки
- comments_template_top_level_query_args
- comments_template_query_args
- comments_array
- comments_template
Возвращаемое значение
Функция не возвращает значение.
Базовое подключение комментариев
Стандартное использование функции для отображения комментариев:
<?php comments_template(); ?>
Подключение пользовательского шаблона комментариев
Вы можете подключить другой файл шаблона комментариев, указав его в параметре $file:
<?php comments_template( '/short-comments.php' ); ?>
Если файл находится в подкаталоге темы, укажите путь относительно корня темы:
<?php comments_template( '/templates/my-comments.php' ); ?>
Изменение пути к файлу через фильтр
Используйте фильтр comments_template для изменения пути к файлу шаблона:
add_filter( 'comments_template', 'genius_comment_template' );
function genius_comment_template( $comment_template ) {
global $post;
if ( !( is_singular() && ( have_comments() || 'open' == $post->comment_status ) ) ) {
return $comment_template;
}
// Если это тип записи 'book'
if ( $post->post_type == 'book' ) {
return __DIR__ . '/reviews.php'; // полный путь до файла
}
return $comment_template;
}
Использование в шаблоне single.php
Чаще всего функция используется в файле шаблона одиночного поста single.php. Например, в стандартной теме WordPress Twenty Fourteen, функция используется следующим образом:
if ( comments_open() || get_comments_number() ) {
comments_template();
}
В данном примере проверяется, открыты ли комментарии к посту с помощью функции comments_open(), либо есть ли хотя бы один комментарий с помощью функции get_comments_number(). Если одно из условий выполняется, подключается шаблон комментариев.
Заключение
Функция comments_template() играет важную роль в управлении комментариями на сайте WordPress. Она позволяет гибко настраивать вывод комментариев, поддерживая как стандартные, так и кастомные шаблоны, а также предоставляет возможности для изменения параметров запроса комментариев через хуки.