Добавление параметров для функции get_comment

Вопрос или проблема

У меня есть код, подобный этому:

<?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 'Комментариев нет.';
}
?>

Объяснение кода:

  1. Параметры $defaults:

    • post_id указывает на ID поста, для которого мы запрашиваем комментарии.
    • number позволяет нам узнать, что нам нужен только один комментарий.
    • orderby и order обеспечивают сортировку комментариев по дате в порядке убывания, что позволяет получить последний комментарий.
    • status указывает, что нужно получить только одобренные комментарии.
  2. Проверка комментариев:

    • Проверяем, не пуст ли массив $comments. Если он не пуст, то это значит, что есть хотя бы один одобренный комментарий.
  3. Вывод информации о комментарии:

    • get_comment_author() извлекает имя автора комментария.
    • get_comment_date() форматирует дату комментария в соответствии с заданным форматом.

Заключение:

Таким образом, такой подход позволяет эффективно и лаконично получить необходимую информацию о последнем одобренном комментарии к посту, избегая избыточных вызовов к базе данных. Убедитесь, что данный код включён в контекст, где переменная $post доступна для использования, например, внутри цикла постов WordPress.

Оцените материал
Добавить комментарий

Капча загружается...