Categories: Все о WordPress

Woocommerce: как вывести дату доставки через дополнительное поле

На днях попался один запрос, нужно было на сайте заказчика сделать вывод даты доставки, для конкретного товара вводилась своя дата. Это могло быть слово «сегодня», «завтра» или количество часов, через которое будет доставка.

Я реализовал это через встроенные дополнительные поля Woocommerce и вывод кода в шаблоне страницы товара. Дальше код и комментарии.

Как добавить произвольное поле

Начну с того, что использовать плагин «advanced custom fields» в wocommerce не нужно, wocommerce уже идет с произвольные полями.

Заходите на страницу добавления товара. Проверьте вверху включена ли галочка для показа Произвольных полей.

Как включить дополнительное поле в WordPress

Дальше прокрутите в самый низ и нажмите Введите новое. Введите название и значение (число или слово «завтра»). Нажмите Добавить произвольное поле:

Добавить новое произвольное поле для записи
Заполнить новое произвольное поле для товара или записи WordPress

Все, значение сохранилось (закрепилось за этим товаром).

Как вывести дополнительное поле в wordpress

Далее нам нужно вывести это значение где-то. В нашем случае я выводил текст на странице товара и только; для этого зашел в папку ./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>';
    }
}

По коду: если поле не пустое и указано число, то я добавляю это к текущему времени; если слова «сегодня»/ «завтра», то выводится это слово и соответственно дата сегодня или завтра.

Как задать формат даты в wordpress (php)

Я использовал формат даты 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"); // для часового пояса Москва

Он задаст время по нужном поясу. Можно добавлять нужные «часы» в скрипте, но разумнее задать часовой пояс.

Результат скрипта

Вот как это может выглядеть. При чем можно применить любые стили, текст для вывода, иконки.

Пример вывода дополнительного поля wordpress

Если есть какие-то вопросы — обязательно пишите в комментарии.

veniamin

Recent Posts

Как заработать токен NOT за стейкинг BNB или FDUSD

Очень много разговоров в последнее время за токен NOT. Много бирж будут делать листинг токена,…

6 месяцев ago

Как заработать TON и NOT за стейкинг в телеграм

Телеграм недавно запустил возможность стейкать (замораживать) USDT и получать за это их валюту TON. Очень…

6 месяцев ago

Бонус 100 USDT +10 BUSD от Binance

Биржа криптовалют Binance проводит сейчас промо-акцию: новым пользователям дают ваучеры в сумме 110 долларов. Деньги…

3 года ago

Как парсить длительность видео youtube на php в привычном виде

Самый главный момент в работе с youtube - это получить ключ api через консоль разработчика…

3 года ago

Как удалить чужую сессию пользователя в ubuntu (linux)

Арендую сервер для небольшого проекта на python. И вот приходит мне уведомление, что за сутки…

3 года ago

Как наложить watermark на видео в python windows массово

Тестирую одну схему, и нужно на много видео наложить watermark. Решил делать через Python 3,…

3 года ago