Как разделить дату и время в комментариях WordPress?

Ссылка скопирована
1 ответ

То, как оперировать с датой и временем поста — более-менее понятно из конструкции в template-tags.php. Но как сделать то же самое с датой/временем в том или ином комментарии, я не нашёл. Предполагаю, что нужно злонамеренно выкрасть соответствующую конструкцию из какого-то файла ядра WP и модифицировать её для размещения в том же template-tags.php. Но это лишь догадка неофита.

Сейчас в html у меня «стандартный» код:

<time datetime="2022-10-19T21:27:52+03:00">   19/X-22 21:27 </time>

<time datetime="2022-10-19T21:27:52+03:00"> 19/X-22 21:27 </time>

Вместо него, хотелось бы видеть что-то вроде этого:

<time datetime="2022-10-19T21:27:52+03:00">   <span class="crazydate">19/X-22</span>   <span class="crazytime">21:27</span> </time>

<time datetime="2022-10-19T21:27:52+03:00"> <span class="crazydate">19/X-22</span> <span class="crazytime">21:27</span> </time>

Как это сделать? Спасибо!

Дополнительно:

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Максим Павлов Ответ

Код ядра WordPress копировать не нужно. Дата и время комментария спокойно выводятся через функции get_comment_time(), get_comment_date() и get_comment_time('c'). Вопрос только в том, где у вашей темы формируется HTML комментария.

Обычно комментарии выводятся через wp_list_comments(). У неё можно указать свой callback:

wp_list_comments([
    'callback' => 'theme_comment_callback',
]);

wp_list_comments([ 'callback' => 'theme_comment_callback', ]);

А в callback собрать нужную разметку:

function theme_comment_callback($comment, $args, $depth) {
    ?>
    <li id="comment-<?php comment_ID(); ?>" <?php comment_class(); ?>>
        <article class="comment-body">
            <time datetime="<?php echo esc_attr(get_comment_time('c')); ?>">
                <span class="crazydate"><?php echo esc_html(get_comment_date('d/m/y')); ?></span>
                <span class="crazytime"><?php echo esc_html(get_comment_time('H:i')); ?></span>
            </time>
 
            <div class="comment-content">
                <?php comment_text(); ?>
            </div>
        </article>
    </li>
    <?php
}

function theme_comment_callback($comment, $args, $depth) { ?> <li id="comment-<?php comment_ID(); ?>" <?php comment_class(); ?>> <article class="comment-body"> <time datetime="<?php echo esc_attr(get_comment_time('c')); ?>"> <span class="crazydate"><?php echo esc_html(get_comment_date('d/m/y')); ?></span> <span class="crazytime"><?php echo esc_html(get_comment_time('H:i')); ?></span> </time> <div class="comment-content"> <?php comment_text(); ?> </div> </article> </li> <?php }

Если тема уже использует callback, найдите его по wp_list_comments или по классу HTML, который сейчас видите в комментариях. Править нужно именно этот callback или шаблон комментариев в дочерней теме.

Для форматирования добавьте CSS:

.crazydate {
  display: inline-block;
  margin-right: 8px;
  font-weight: 600;
}
 
.crazytime {
  color: #667;
}

.crazydate { display: inline-block; margin-right: 8px; font-weight: 600; } .crazytime { color: #667; }

Если нужно изменить формат даты глобально, можно настроить формат в админке WordPress. Но если нужна именно отдельная обёртка span для даты и времени, это делается в шаблоне вывода комментария, а не через настройки.

Если комментарии выводятся не стандартным списком, а кастомным компонентом темы, ищите не только comments.php, но и функции с названием вроде comment_callback, theme_comment, walker_comment. В современных темах этот код часто лежит в inc/template-tags.php или inc/comments.php. Правка в одном месте изменит все комментарии на сайте, поэтому перед изменением лучше вынести функцию в дочернюю тему или переопределить callback через аргументы wp_list_comments().

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно