От автора: время и дата WordPress – их настройка кажется довольно простой задачей, не так ли? Ну да. Это можно сделать, просто создав тег шаблона и позволив WordPress выполнить эту работу за вас. Но иногда вы можете столкнуться с проблемами.
В этом кратком руководстве я покажу вам различные функции, которые WordPress предоставляет для отображения даты и времени, и расскажу, какие из них использовать, если вы сталкиваетесь со сложностями.
Доступные теги шаблона
WordPress предоставляет четыре функции для вывода даты и / или времени. Это:
the_date(): По умолчанию выводит дату публикации в формате F j, Y, поэтому, если запись была опубликована 20 ноября 2018 года, он повторяет 20 ноября 2018 года.
get_the_date(): Позволяет извлечь дату и не выводить ее. Чтобы вывести дату, вам нужно использовать echo get_the_date(), что даст тот же результат, что и the_date(). Это полезно, если вы уже используете echo в своем коде. Это также может помочь обойти проблему не отображаемых дат, которую мы вскоре рассмотрим.
the_time() и get_the_time(): извлекают время по умолчанию, но если вы укажете форматирование даты, вы также можете указать дату. Вы даже можете использовать их для вывода только даты, если настроите соответствующим образом. Но было бы более целесообразно использовать the_date() или echo get_the_date().
Форматирование даты
Каждая функция имеет формат по умолчанию, который вы можете переопределить. Для этого вам нужно будет использовать стандартное форматирование даты и времени PHP. Вот несколько примеров для записи, опубликованной 20 ноября 2018 года.
the_date() выводит 20 ноября 2018 года по умолчанию
echo get_the_date( l, S M Y ) выводит вторник, 20 ноября 2018 года
the_time( ‘g:i a’ ) выводит 14:03
echo get_the_time( ‘G:i’ ) выводит 14:03
the_time( ‘g:i a, D, j F y’ ) выводит 14:03, Вт, 20 ноября 18
Отладка дат в цикле: Отсутствуют даты на странице архива
Если вы используете the_date() для вывода дат на странице архива, и вы обнаружите, что дата не отображается для некоторых записей, это потому, the_date() не повторяет дату последующих публикаций, опубликованных в тот же день, что и предыдущая.
Иногда вам может этого не понадобиться, если вы не хотите повторять дату для каждой публикации, опубликованной в тот же день.
Но если вы хотите, чтобы для всех записей с заголовком и любым другим контентом отображались даты, вам нужно использовать другую функцию. Вы можете использовать любую из трех прочих функций, приведенных выше.
Самый простой вариант для замены the_date() — echo get_the_date(). Если вы хотите добавить время, то для этого подойдет the_time() или echo get_the_time().
Примечание. Если вас сбивает с толку тот факт, что the_date() вызывает эту проблему, а the_time() — нет, это связано с тем, что записи, опубликованные в тот же день, не были опубликованы одновременно. Вам нужно будет приложить много усилий, чтобы это произошло: планирование записей, редактирование времени публикации или координация усилий между двумя блоггерами!
Я встречалась с подобной проблемой в шаблоне главной страницы темы, которую создала для клиента. В этом шаблоне было несколько циклов, все они выводили разный тип контента, и во всех использовался WP_Query. Проблема не была очевидна, пока клиент не добавил две записи (то, чего он обычно не делал). Они были озадачены тем, почему дата второй записи не отображается на главной странице и продолжали ее редактировать, обновляя ее и пересохраняя, пока не сдались и не спросили меня. Вот исходный код:
<ul class="newsletters"> <?php $query = new WP_Query( array( 'post_type' => 'post', 'category_name' => 'newsletters', 'posts_per_page' => 8 ) ); while ($query->have_posts()) : $query->the_post(); ?> <li class="home newsletter"><a href="<?php the_permalink(); ?>"><?php the_title(); ?> - <?php the_date( 'j F' ); ?></a></li> <?php endwhile; ?> </ul>
Я отредактировала функцию так, чтобы она выглядела следующим образом:
<ul class="newsletters"> <?php $query = new WP_Query( array( 'post_type' => 'post', 'category_name' => 'newsletters', 'posts_per_page' => 8 ) ); while ($query->have_posts()) : $query->the_post(); ?> <li class="home newsletter"><a href="<?php the_permalink(); ?>"><?php the_title(); ?> - <?php echo get_the_date( 'j F' ); ?></a></li> <?php endwhile; ?> </ul>
В начале строки li class=»home newsletter» я заменила the_date( ‘j, F’ ) на echo get_the_date( ‘j, F’ ). Это устранило проблему. Поэтому, если вы когда-нибудь обнаружите, что в архивах не отображаются даты, это может быть решением.
Автор: Rachel McCollin
Источник: https://code.tutsplus.com/
Редакция: Команда webformyself.