Все про даты в WordPress (от задания до вывода)
Изначально хотел просто написать про вывод даты в WordPress статьях, но в данной теме оказалось достаточно много нюансов, поэтому решил рассмотреть их все. Заметка будет полезна как абсолютным новичкам, так и пользователям с небольшим опытом. Сам по себе, вопрос даты вордпресс, в принципе, не сложный, но информации по нему хватает. Вот что вы сможете узнать из статьи:
- Задание/редактирование даты поста.
- Настройка формата.
- Вывод даты в постах + соответствующие функции.
- Как убрать дату.
- Время изменения заметки.
Дата поста в WordPress (установка и редактирование)
При создании новой заметки в админке WordPress дата публикации задается в блоке «Опубликовать», который обычно находится справа от текстового редактора.
Здесь устанавливаете нужный месяц, год, число и даже время. Вы сможете изменить данные параметры позже в любое время, если захотите, — для этого заходите в редактирование заметки и задаете новые значения. Кстати, если укажете дату, которая еще не наступила, пост будет скрыт до того момента — данная фишка позволяет реализовать запланированную публикацию в блоге.
В системе также доступа правка даты записи wordpress постов через быстрое редактирование. Выбираете в разделе «Записи» — «Все записи» и видите список всех заметок. Далее при наведении кликаете по свойствам и устанавливаете требуемые значения числа, месяца, года и т.п.
Не забудьте потом нажать кнопку «Обновить». Таким образом вы сможете быстро изменить даты выхода нескольких статей вордпресс на одной странице.
Формат даты в WordPress
Если зайти в раздел «Настройки» — «Общие», то в самом низу страницы найдете установки для формата даты в вордпресс и, чуть ниже, — времени. Отмечаете желаемый вариант из списка или указываете произвольный.
Данные значения будут использоваться в соответствующих функциях the_date и the_time для шаблона (об этом чуть ниже). Формат для вывода даты в WordPress задается в виде строки, например:
d.m.Y (l) // 09.06.2016 (Четверг) D - j M - Y // Чт - 9 Июн - 2016 |
Здесь используются такие же обозначения как в PHP, в частности:
- d — число месяца с 0 спереди для цифр меньше 10;
- m — номер месяца из двух символов (с ведущим нулем);
- Y — обозначает год (из 4х цифр);
- l (строчная L) — название дня недели полностью;
- D — сокращенный день недели;
- j — выводит день месяца без 0 спереди;
- M — сокращенное название месяца из трех символов;
- S — английский суффикс для дня месяца — 1st, 2nd или 15th (раньше для вывода даты wordpress с суффиксом на русском был специальный плагин, возможно, сейчас проблема исчезла);
- F — полное название месяца;
- и др.
Для времени также есть разные значения, но чаще всего ставится просто строка «H:i», где первый символ «H» отвечает за часы в 24-часовом формате, а «i» — минуты с нулем спереди, если нужно.
Как вывести дату поста в WordPress (the_date)
Сначала разберемся с функцией, которая используется для решения этой задачи — the_date. Она имеет следующий синтаксис:
<?php the_date( $format, $before, $after, $echo ); ?> |
Здесь:
- $format — формат, о котором говорили выше (можно использовать значения и для времени);
- $before — текст перед датой;
- $after — текст после даты;
- $echo — указывает выводить результат функции или нет (по умолчанию True).
Пример использования:
<?php $mypost_date = the_date('d.m.Y', '<i>дата: ', '</i>', FALSE); echo $mypost_date; ?> |
В итоге получим строку курсивом — дата: 01.06.2016. Дабы вывести дату поста мы сначала присвоили ее переменной $mypost_date, а затем отобразили с помощью echo. Здесь значение FALSE для последнего параметра функции позволило после ее выполнения не отображать результат. Разумеется, так никто не делает, а я привел этот код лишь для примера. Обычно дату отображают сразу:
<i><?php the_date('d.m.Y'); ?></i> |
Можно даже не указывать формат, используя функцию без переменных, если он полностью соответствует тому, что вы задавали в настройках админки.
Второй шаг — добавление the_date в шаблон сайта. В файлах темы wordpress отображение даты, как и других функций с информацией о постах блога, должно располагаться внутри цикла Loop, то есть между:
<?php if (have_posts()) : while (have_posts()) : the_post(); ?> |
и
<?php endwhile; ?> |
Такая конструкция встречается и в шаблоне для единичного отображения записей (single.php), и в архивах категорий (category.php), и в основном файле (index.php). Все зависит от того, где вы хотите вывести дату поста.
Как убрать даты публикации в WordPress
Чтобы в вордпресс убрать дату публикации нужно выполнить противоположные действия тем, о которых говорилось выше. Первым делом требуется понимать какой файл шаблона открывать для редактирования:
- Для правки страницы поста с полным текстом — single.php, для страницы — page.php.
- Для главной — это зачастую файл index.php.
- Чтобы убрать дату из вордпресс архивов ищите глобальный файл archive.php. Если в макете есть category.php и tags.php, то страницы разделов и меток определяются через них, переопределяя основной archive.php.
- В новых темах можно встретить функцию get_template_part, которая вызывает другой файл для подстановки кода в данное конкретное место шаблона. В таком случае функцию the_date придется искать в указанном здесь файле.
Если же вы хотите убрать даты из WordPress темы целиком, то можете воспользоваться программой WinGrep для Windows. Софт ищет нужную информацию в фалах или в определенной директории — запускаете поиск по «the_date» и получаете список файлов, где она всетрчается.
После того как вы нашли места использования the_date или the_time, открываете соответствующие файлы для редактирования и удаляете функции из них. Это позволит навсегда убрать дату публикации в WordPress сайте. Если боитесь сделать ошибку, сделаете копии файлов темы дабы потом иметь возможность их восстановить.
Дата редактирования в WordPress (the_modified_date)
Если честно, именно ради этой задачи и задумывался данный пост. Информация по WP и другим техническим тематикам может устаревать, поэтому по методу тыквы и вообще важно ее обновлять. Также желательно предоставить читателю какую-то пометку о том, что статья актуальная. Для этого можно реализовать в WordPress отображение даты создания и редактирования поста (отдельно).
С решением нам поможет функция the_modified_date, ее синтаксис:
<?php the_modified_date( $d, $before, $after, $echo ); ?> |
Где:
- $d — формат даты;
- $before и $after — тексты перед и после даты;
- $echo — выводить или нет результаты.
Параметры, в принципе, похожи и на обычную функцию the_date. Итого чтобы вывести обе даты записи в вордпресс использую следующий код:
Дата: <?php the_date(); ?>. Последнее изменение: <?php the_modified_date(); ?>. |
Параметры, как видите, не указываю, поэтому формат считывается из настроек админки.
Если у вас еще остались какие-то вопросы по WordPress датам, пишите в комментариях, будем разбирать.
комментария 23 к статье “Все про даты в WordPress (от задания до вывода)”
Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!
Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:
- Як сховати відсутні товари в Woocommerce шорткодах та схожих товарах
- Сервіс AdMaven + плагін для монетизації трафіка на WordPress сайтах
- Плагіни для створення стрічки новин з біжучим рядком в WordPress
- Як змінити розміщення кнопки оформлення замовлення в WooCommerce
- Плагін WHWS Display In Stock Products First – відображення товарів в наявності першими
- Підписка MonsterONE: чи варто використовувати цей сервіс у 2023 році? (+5 продуктів, які треба скачати в першу чергу)
- Онлайн генератор ссылок на мессенджеры для WordPress и не только
- WooCommerce (46)
- Безопасность (12)
- Видео (6)
- Виджеты (28)
- Возможности (141)
- Вопрос-ответ (6)
- Начинающим (52)
- Новости (46)
- Оптимизация (23)
- Плагины (246)
- Сервисы (87)
- Хаки и секреты (87)
- Шаблоны (45)
- Записи и посты wordpress, оформление записи (5,91 из 7, голосов - 47)
- Проблема с адаптивными изображениями в Gutenberg редакторе WordPress (3,87 из 7, голосов - 45)
- Умный копирайт в footer.php для wordpress (5,63 из 7, голосов - 30)
- Обновление плагинов и тем в WordPress: автоматическое, через FTP, скрытие уведомлений (5,19 из 7, голосов - 31)
- Polylang — плагин для мультиязычных сайтов на нескольких языках в WordPress (4,42 из 7, голосов - 31)
- Плагин TinyMCE Advanced – wordpress текстовый редактор (6,35 из 7, голосов - 20)
- Рубрики и категории wordpress, функция wp_list_categories (6,05 из 7, голосов - 20)
- Дизайн Мания - о веб-дизайне и не только.
- Tod's Blog - все про заработок онлайн.
- Вебдванольные заметки - обзоры веб-сервисов.
- Советы по выбору холодильника LG с технологией No Frost
- Зачем нужны Wi-Fi ретрансляторы и как выбрать подходящую модель
- Введение в онлайн-казино Slotor777: многообразие игр и привлекательные бонусы
- Необходимость использования облачного хранилища в наше время, что важно и как выгодно?
- Спрощення процесу звітності за допомогою програми BAS Бухгалтерія
- Технологія підключення інтернету GPON та її переваги
- За що гравці найбільше цінують Lineage 2
- Для каких проектов нужна аренда виртуального сервера и что такое VPS
Интересная мысль по поводу вывода двух дат! Как вы думаете поисковики при этом какую из них будут принимать в учет? Или и ту и другую?
Александр, сложно сказать, что считает поисковик, если честно даже не задумывался. Если нужно «скормить» ему конкретную дату, то там следует использовать специальную разметку, насколько я знаю.
Да, я тоже думаю, что разметка для того и нужна, чтобы показывать что принимать в учет
Давно искал информацию про время, оказывается все просто. Спасибо вам!
На самом деле с датой у меня только один вопрос. Как выводить правильный формат даты в зависимости от выбранного языка. Очень интересно ваше мнение.
Антон, если вы про склонение названий месяцев на русском, то помнится когда-то были плагины Russian Date by Axelnsk, MaxSite Russian Date. Но разрабатывались они очень давно, поэтому не факт, что сейчас работают. Проще всего выводить через формат d.m.Y, где нет никаких названий — я использую этот вариант, меньше лишних слов на странице.
Спасибо за ответ. Для отображения склонений не нужны плагины, достаточно простейшей функции. Я говорил именно про числа: 27.01.2018 или 01.27.2018 в зависимости от выбранного языка. Для этого есть решение, но я только начал разбираться.
Антон, я понял, про числа в статье вроде как все есть — варианты форматирование для the_date указаны. В крайнем случае еще на сайте PHP можно глянуть.
По поводу определения языка, помню, использовал функцию get_locale — через IF условный оператор: если ru_RU, то одно действие, en_US — другое и т.п.
Для стилизации даты нашел решение(может кому-то пригодится), можно отдельно стилизовать все переменные:
Вставляем сами знаете куда… в single.php или в storefront-template-functions.php как в моем случае.
ps c php не знаком, поэтому навоял такое…
А что если реальное время 14-50
а админка в форме показывает 9-40
Выбираю пунки Произвольное, но изначально время стоит не то.
Где это поправить, а то добавляю запись в обед, а сайт показывает утро)
Роман, в Настройках — Общие есть пункт с «часовым поясом» — посмотрите чтобы там все правильно было установлено. А вообще, насколько я знаю, время считывается из параметров сервера — поэтому если там весьма радикальное отличие от текущего и с часовой зоной все впорядке, следует обратиться к хостеру.
А как поменять изображение ( фон) на котором отображена дата? Не цвет, а именно фоновую картинку?
Михаил, посмотрите в инспекторе браузера Ctrl+Shift+I класс, который отвечает за дату/фон и через стили (style.css или другой) внесите нужные изменения.
Подскажите, пожалуйста. Моему сайту меньше месяца, я сгенерировала sitemap.xml через плагин all in one seo pack, гугл выдает проблему «Обнаружена неверная дата. Исправьте дату или ее формат перед повторной передачей» пример: даты Родительский тег: url Тег: lastmod Значение: 2018-09-14 04:08:33
Как и где мне исправить эту ошибку? В настройках даты на вордпресс установлено d.m.Y время H:i
Екатерина, сайтмап генерируется автоматически, поэтому тут ничего изменить не сможете. Возможно, даже это косяк со стороны all in one seo pack. Тут есть 3 пути:
1) покопаться в настройках сервиса — вдруг там есть какие-то настройки дабы это исправить.
2) Поставить отдельный модуль для задачи, например, Google XML Sitemaps или какой-то еще.
3) Перейти на более крутой плагин WordPress SEO by Yoast, где проблем с картой сайта точно нет. Если проект молодой и контента мало, можно вручную все заново настроить. Если же уже есть посты/статьи, то понадобится миграция из All In One SEO Pack в WordPress SEO (через модуль SEO Data Transporter).
Я сейчас установила плагин, ошибка осталась, в Яндексе все ок, гугл снова выдает 2000 ошибок. Мог ли вебмастер при создании сайта где-то ошибиться? И где мне теперь это можно поправить(?
Екатерина, если вы про модуль SEO by Yoast, то он точно рабочий, нужно искать проблему в другом месте. Он кстати генерирует карту немного по другому адресу — sitemap_index.xml. Ее нужно включить в настройках, она не активируется автоматически. Возможно, у вас на FTP сайта лежит старая sitemap.xml, и гугл считывает именно ее. Короче говоря, есть нюансы, напишите лучше на почту stod84@gmail.com — нужно больше конкретики о проблеме.
Для новичка интересно было бы добавить выбор даты рождения в поле профиля через выпадающий календарь и отображать на страницах отдельных групп пользователей. Далее, например, вывод иконки с гороскопом или знаком зодиака с учетом этой даты. Применения у каждого могут быть свои.
Антон, это более сложные задачи уже, я бы искал для их решения плагины. Тут в статье больше теория. Если столкнусь с ними в будущем, обязательно напишу пост.
Здравствуйте! Можете помочь? Не знаю, что случилось, но дата у всех постов стоит сегодняшняя, даже у тех, которые были давно опубликованы… материалы 3-4 дневной давности с датой 7.03.2019 стоят…
Noro, есть два варианта: 1) если дата отображается только на сайте, а в админке в параметрах постах указаны нормальные значения, то проблема в файле шаблона — неправильно выводятся данные; 2) если же сегодняшняя дата указана непосредственно для записей (и в админке, и в базе данных), то вероятно это глюк/ошибка какого-то из плагинов, сами по себе подобные значения не меняются. К сожалению, во втором случае, если информация уже внесена в базу, то вернуть прошлые значения можно только вручную (либо восстановив старую версию сайта из бекапа).
Здравствуйте! У меня аналогичная ошибка как у Noro, но даже смена дат вручную не помогает — всё равно отображается во всех постах сегодняшняя. Не знаете почему так может быть?
YaBlogo, нужно смотреть как именно в файлах шаблона выводится дата — там где-то и закралась ошибка.