Как разделить дату и время в комментариях WordPress?
То, как оперировать с датой и временем поста — более-менее понятно из конструкции в 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>
Как это сделать? Спасибо!
Дополнительно:
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Код ядра WordPress копировать не нужно. Дата и время комментария спокойно выводятся через функции
get_comment_time(),get_comment_date()иget_comment_time('c'). Вопрос только в том, где у вашей темы формируется HTML комментария.Обычно комментарии выводятся через
wp_list_comments(). У неё можно указать свой 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 }
Если тема уже использует callback, найдите его по
wp_list_commentsили по классу HTML, который сейчас видите в комментариях. Править нужно именно этот callback или шаблон комментариев в дочерней теме.Для форматирования добавьте CSS:
.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().