Вопрос или проблема
У меня есть код, подобный этому:
<?php $comments = get_comments( 'post_id=' . $post->ID ); echo get_comment_author($comments[0]->comment_ID); ?>
<br />
<?php $comments = get_comments( 'post_id=' . $post->ID ); echo get_comment_date('d F H:i', $comments[0]->comment_ID); ?>
И я хочу включить 'approve' - одобренные
комментарии в этот код.
Я знаком с этим кодом:
<?php $defaults = array(
'ID' => '',
'number' => '1',
'order' => 'DESC',
'status' => 'approved',
); ?>
Но я не могу интегрировать оба кода.
Моя цель: показать имя последнего комментатора поста и дату комментария d F H:i
вместе. Есть предложения?
Моя цель: показать имя последнего комментатора поста и дату комментария d F H:i
вместе. Есть предложения?
Я думаю, что вам нужно:
$defaults = array(
'post_id' => $post->ID,
'number' => '1',
'orderby' => 'comment_date_gmt ', // значение по умолчанию; не совсем необходимо
'order' => 'DESC',
'status' => 'approved',
);
Вам не нужно дважды вызывать get_comments()
.
$defaults = array(
'post_id' => 120,
'number' => '1',
'orderby' => 'comment_date_gmt ', // значение по умолчанию; не совсем необходимо
'order' => 'DESC',
'status' => 'approved',
);
$comments = get_comments($defaults);
if (!empty($comments[0])) {
$comments = $comments[0];
comment_author($comments->comment_ID);
comment_date('d F H:i', $comments->comment_ID);
}
Ответ или решение
Для решения вашей задачи о получении информации о последнем комментарии к посту, включая имя комментатора и дату комментария, с фильтрацией по статусу "одобрен", необходимо объединить предложенные вами фрагменты кода. Ниже приведен пример кода, который интегрирует все параметры и позволяет избежать дублирования вызовов функции get_comments()
.
<?php
// Настройка параметров для получения комментариев
$defaults = array(
'post_id' => $post->ID, // ID текущего поста
'number' => '1', // Получаем только один комментарий
'orderby' => 'comment_date_gmt', // Сортировка по дате комментария
'order' => 'DESC', // Последний комментарий
'status' => 'approve', // Фильтруем только одобренные комментарии
);
// Получение комментариев на основе заданных параметров
$comments = get_comments($defaults);
// Проверяем, есть ли полученные комментарии
if (!empty($comments)) {
// Берём последний одобренный комментарий
$last_comment = $comments[0];
// Выводим имя автора комментария
echo 'Имя комментатора: ' . get_comment_author($last_comment->comment_ID) . '<br />';
// Выводим дату комментария в заданном формате
echo 'Дата комментария: ' . get_comment_date('d F H:i', $last_comment->comment_ID);
} else {
echo 'Комментариев нет.';
}
?>
Объяснение кода:
-
Параметры
$defaults
:post_id
указывает на ID поста, для которого мы запрашиваем комментарии.number
позволяет нам узнать, что нам нужен только один комментарий.orderby
иorder
обеспечивают сортировку комментариев по дате в порядке убывания, что позволяет получить последний комментарий.status
указывает, что нужно получить только одобренные комментарии.
-
Проверка комментариев:
- Проверяем, не пуст ли массив
$comments
. Если он не пуст, то это значит, что есть хотя бы один одобренный комментарий.
- Проверяем, не пуст ли массив
-
Вывод информации о комментарии:
get_comment_author()
извлекает имя автора комментария.get_comment_date()
форматирует дату комментария в соответствии с заданным форматом.
Заключение:
Таким образом, такой подход позволяет эффективно и лаконично получить необходимую информацию о последнем одобренном комментарии к посту, избегая избыточных вызовов к базе данных. Убедитесь, что данный код включён в контекст, где переменная $post
доступна для использования, например, внутри цикла постов WordPress.