Как создать WordPress шорткод отображающий дату

Как создать WordPress шорткод отображающий дату

В сегодняшнем уроке, вернемся немного к WP и рассмотрим пример разработки шорткода отображающего дату в произвольном формате. Формат будет задаваться шаблоном PHP функции date().

PHP код шорткода

Код нашего шорткода довольно прост имеет всего навсего пару строк:

add_shortcode("date", function($atts)
{
	//Sets
	$atts = shortcode_atts(array(
		'template' => date('Y-m-d'),
	),$atts);

	return date($atts['template']);
});

Где:
date — название нашего шорткода
shortcode_atts() - wordpress функция, устанавливающая данные для шорткода по умолчанию. В нашем случае, если параметр шаблона даты «template» не будет установлен, будет применен шаблон «Y-m-d», т. е. «гггг-мм-дд»(или год-месяц-день).
date() - стандартная PHP ф-я работы с датой (вернее отображающая ее). В нее, первым аргументом, мы как рази и помещаем шаблон формата отображения даты. Подробнее, о том как есть способы формирования даты, вы можете найти в интернете, на официальном сайте PHP.

Данный PHP код, разместите в файле «functions.php» вашей темы.

Как использовать шорткод

Для того что бы использовать шорткод, в текстовом редакторе WordPress, для теста введем следующий текст.

Без параметра - [date]
Год - [date template="Y"]
Год и месяц - [date template="Y-m"]
Год, месяц и день - [date template="Y-m-d"]
Текущее время - [date template="H:i:s"]

Описания думаю не нужно, с текста выше оно должно быть и так понятно. Но если что, прошу к комментариям.

На фронтенде (на странице или в посте), т. е. там где будет отображаться результат работы нашего шорткода, вы сможете увидеть следующее:

Без параметра — 2019-01-12
Год — 2019
Год и месяц — 2019-01
Год, месяц и день — 2019-01-12
Текущее время — 14:53:36

Дата и время может отличаться, т. к. выше опубликовано время тестирования шорткода.

Где может быть полезен данный шорткод? Вопрос хороший, сейчас я вижу только одно место где его можно использовать. Это подвал сайта, где обычно публикуется год создания сайта и текущий год.

Что бы реализовать нечто подобное, используйте следующий код:

2014 - <?php echo do_shortcode('[date template="Y"]'); ?>

На этом все, удачи!

Как создать WordPress шорткод отображающий дату
Комментарии
  1. Владимир

    Спасибо за статью! Как в выводить в шаблоне время по Москве? [date template="H:i:s"]

    ответить
    1. Pavel

      Есть несколько вариантов:
      1. Зная время сервера, к ф-и time() прибавить разницу во времени и указать вторым параметров в date() ф-и
      2. В начале шорткода, указать таймзону Москвы а в конце шорткода указать таймзону сервера.

      ответить
      1. Владимир

        Большое спасибо за ответ) Буду пробовать)

        ответить
        1. Владимир

          Может кому пригодиться, решил таким образом:
          // Шорткод дата и время
          add_shortcode("date", function($atts){
          //Sets
          date_default_timezone_set('Europe/Moscow');
          $atts = shortcode_atts(array(
          'template' => date('Y-m-d'),
          ),$atts);

          return date($atts['template']);
          });

          ответить
          1. Pavel

            Так но не так. См. https://plance.top/php/kak-poluchit-vremya-vseh-taymzon-timezone-na-php.html
            В начале укажите $default_timezone = date_default_timezone_get();
            А в конце, перед ретурном - date_default_timezone_set($default_timezone);
            Вы когда вставили шорткод, изменили для всего последующего кода таймзону. А этого может и не стоило бы делать (от ситуации зависит)

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

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