На днях попался один запрос, нужно было на сайте заказчика сделать вывод даты доставки, для конкретного товара вводилась своя дата. Это могло быть слово «сегодня», «завтра» или количество часов, через которое будет доставка.
Я реализовал это через встроенные дополнительные поля Woocommerce и вывод кода в шаблоне страницы товара. Дальше код и комментарии.
Начну с того, что использовать плагин «advanced custom fields» в wocommerce не нужно, wocommerce уже идет с произвольные полями.
Заходите на страницу добавления товара. Проверьте вверху включена ли галочка для показа Произвольных полей.
Дальше прокрутите в самый низ и нажмите Введите новое. Введите название и значение (число или слово «завтра»). Нажмите Добавить произвольное поле:
Все, значение сохранилось (закрепилось за этим товаром).
Далее нам нужно вывести это значение где-то. В нашем случае я выводил текст на странице товара и только; для этого зашел в папку ./wp-content/plugins/woocommerce/templates/content-single-product.php и добавил следующий код:
$deliv_data = get_post_meta($post->ID, 'data_dostavka', true); if ($deliv_data != '') { if (is_numeric(($deliv_data))) { $timestamp = time() + 60*60*(int)$deliv_data; $whendeliv = date("d.m.Y", $timestamp); echo 'Дата доставки: <strong>' . $whendeliv . '</strong>'; } elseif ($deliv_data == 'завтра') { $timestamp = time() + 60*60*24; //+1 day $whendeliv = ' (' . date("d.m.Y", $timestamp) . ')'; echo 'Дата доставки: <strong>' . $deliv_data . $whendeliv . '</strong>'; } elseif ($deliv_data == 'сегодня') { $timestamp = time(); $whendeliv = ' (' . date("d.m.Y", $timestamp) . ')'; echo 'Дата доставки: <strong>' . $deliv_data . $whendeliv . '</strong>'; } }
По коду: если поле не пустое и указано число, то я добавляю это к текущему времени; если слова «сегодня»/ «завтра», то выводится это слово и соответственно дата сегодня или завтра.
Я использовал формат даты 13.04.2019 (ДД.ММ.ГГГГ). Может Вам нужно выводить в другом формате или показывать часы. Для этого достаточно изменить первый аргумент функции date():
$whendeliv = date("d.m.Y", $timestamp); //Еще примеры $whendeliv = date("F j, Y, g:i a", $timestamp); // March 13, 2019, 5:16 pm $whendeliv = date("m.d.y", $timestamp); // 03.13.19 $whendeliv = date("j, n, Y", $timestamp); // 13, 3, 2019 $whendeliv = date("Ymd", $timestamp); // 20190313 $whendeliv = date('h-i-s, j-m-y, it is w Day', $timestamp); // 05-16-18, 13-03-19, 1631 1618 6 Satpm01 $whendeliv = date('\i\t \i\s \t\h\e jS \d\a\y.', $timestamp); // it is the 10th day. $whendeliv = date("D M j G:i:s T Y", $timestamp); // Sat Mar 19 17:16:18 MST 2019 $whendeliv = date('H:m:s \m \i\s\ \m\o\n\t\h', $timestamp); // 17:03:18 m is month $whendeliv = date("H:i:s", $timestamp); // 17:16:18 $whendeliv = date("Y-m-d H:i:s", $timestamp); // 2019-03-10 17:16:18 (the MySQL DATETIME format)
Больше примеров гуглится по запросу «формат даты php«.
Если Вам нужно установить часовой пояс отличный от стандартного (на некоторых хостингах это может быть UTC+00:00, на других локальное время сервера), пропишите код перед скриптом:
date_default_timezone_set("Europe/Kiev"); // для часового пояса Киев date_default_timezone_set("Europe/Moscow"); // для часового пояса Москва
Он задаст время по нужном поясу. Можно добавлять нужные «часы» в скрипте, но разумнее задать часовой пояс.
Вот как это может выглядеть. При чем можно применить любые стили, текст для вывода, иконки.
Если есть какие-то вопросы — обязательно пишите в комментарии.
Очень много разговоров в последнее время за токен NOT. Много бирж будут делать листинг токена,…
Телеграм недавно запустил возможность стейкать (замораживать) USDT и получать за это их валюту TON. Очень…
Биржа криптовалют Binance проводит сейчас промо-акцию: новым пользователям дают ваучеры в сумме 110 долларов. Деньги…
Самый главный момент в работе с youtube - это получить ключ api через консоль разработчика…
Арендую сервер для небольшого проекта на python. И вот приходит мне уведомление, что за сутки…
Тестирую одну схему, и нужно на много видео наложить watermark. Решил делать через Python 3,…