Как добавить поле даты для оформления заказа в WooCommerce
Опубликовано: 2020-12-20Многим интернет-магазинам нужны настраиваемые поля на странице оформления заказа. Например, кондитерской может понадобиться поле даты доставки на странице оформления заказа.
Прелесть WooCommerce в том, что он позволяет добавлять настраиваемые поля на странице оформления заказа, например, после полей выставления счетов и доставки или перед кнопкой размещения заказа.
WooCommerce добавить поле даты в кассу
В этом посте вы узнаете, как добавить поле даты доставки на страницу оформления заказа WooCommerce. Я добавлю его после поля оплаты. Это поле позволит покупателям выбрать дату доставки своего заказа. Кроме того, я поделюсь, как вы можете отобразить настраиваемое поле на странице уведомлений по электронной почте и полученном заказе.
1. Добавление пользовательского поля даты на страницу оформления заказа WooCommerce
WooCommerce позволяет добавлять настраиваемые поля в разные места в зависимости от того, какие хуки вы будете использовать. WooCommerce определяет множество действий на странице оформления заказа. В этом уроке я добавлю поле после полей платежного адреса или адреса доставки.
Чтобы добавить сюда настраиваемое поле, мы будем использовать действие woocommerce_after_checkout_billing_form
. Добавьте следующий код в файл functions.php:
add_action('woocommerce_after_checkout_billing_form', 'njengah_extra_fields_after_billing_address', 10, 1); функция njengah_extra_fields_after_billing_address () { _e("Дата доставки: ", "add_extra_fields"); ?> <br> <input type="text" name="add_delivery_date" class="add_delivery_date" placeholder="Дата доставки"> <?php }
Это результат:
Покупателям необходимо выбрать дату доставки заказа. Это означает, что нам нужно добавить календарь для этого поля. Кроме того, вы можете попробовать это с простым текстовым полем, чтобы упростить задачу.
Мы будем использовать средство выбора даты jQuery. Это означает, что нам нужно будет включить необходимые файлы JavaScript и CSS с помощью действия WordPress wp_enqueue_scripts.
add_action('woocommerce_after_checkout_billing_form', 'display_extra_fields_after_billing_address', 10, 1); функция display_extra_fields_after_billing_address () { _e("Дата доставки: ", "add_extra_fields"); ?> <br> <input type="text" name="add_delivery_date" class="add_delivery_date" placeholder="Дата доставки"> <скрипт> jQuery (документ) .ready (функция ( $ ) { $( ".add_delivery_date").datepicker( { минДата: 0, }); }); </скрипт> <?php } add_action('wp_enqueue_scripts', 'enqueue_datepicker'); функция enqueue_datepicker() { если (is_checkout()) { // Загружаем скрипт выбора даты (предварительно зарегистрированный в WordPress). wp_enqueue_script('jquery-ui-datepicker'); // Вам нужен стиль для выбора даты. Для простоты я сделал ссылку на размещенный в Google jQuery UI CSS. wp_register_style('jquery-ui', '//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css'); wp_enqueue_style('jquery-ui'); } }
Это результат:
Как работает код
Я прикрепил функцию display_extra_fields_after_billing_address()
к действию WooCommerce. Во-первых, мы печатаем метку «Дата доставки» и добавляем одно текстовое поле ввода для средства выбора даты, которое можно использовать с помощью функции jquery datepicker(
).
enqueue_datepicker()
к действию WordPress. В этой функции я добавил средство выбора даты jQuery и его стиль, используя wp_enqueue_script()
.
Как только мы добавим приведенный выше фрагмент кода, он отобразит наше настраиваемое поле под полями платежного адреса.
2. Отображение настраиваемого поля в уведомлениях по электронной почте
Следующим шагом является добавление настраиваемого поля, которое будет отображаться в электронном письме клиента. Добавьте следующий код в файл functions.php:
add_action('woocommerce_checkout_update_order_meta', 'add_order_delivery_date_to_order', 10, 1); функция add_order_delivery_date_to_order ( $order_id ) { if ( isset( $_POST ['add_delivery_date'] ) && '' != $_POST ['add_delivery_date'] ) { add_post_meta($order_id, '_delivery_date', sanitize_text_field($_POST ['add_delivery_date'] )); } }
Как работает код
Я прикрепил add_order_delivery_date_to_order()
к действию WooCommerce. Он добавит дату доставки в метатаблицу поста. Он проверит, что клиент выбрал дату, прежде чем добавить ее в базу данных.
Если клиент выбирает дату, она сохраняется в таблице wp_postmeta
с помощью функции WordPress add_post_meta()
. Эта функция требует post_id
, мета-ключ и мета-значение. В нашем случае мы использовали идентификатор заказа в качестве нашего post_id
, мета-ключ будет _delivery_date
, а мета-значение будет датой доставки, выбранной клиентом.
Я рекомендую вам очистить ваши переменные данные $_POST
. Он удаляет из строки разрывы строк, символы табуляции и лишние пробелы.
После сохранения даты доставки в базе данных мы отобразим ее в электронном письме клиента. Добавьте следующий код в файл functions.php:
add_filter('woocommerce_email_order_meta_fields', 'add_delivery_date_to_emails', 10, 3); функция add_delivery_date_to_emails ($fields, $sent_to_admin, $order) { if( version_compare( get_option( 'woocommerce_version' ), '3.0.0', ">=" )) { $order_id = $order->get_id(); } еще { $order_id = $order->id; } $delivery_date = get_post_meta($order_id, '_delivery_date', true); если ( '' != $доставка_дата ) { $fields['Дата доставки'] = массив( 'label' => __('Дата доставки', 'add_extra_fields'), 'значение' => $delivery_date, ); } вернуть $поля; }
3. Отображение настраиваемого поля на странице благодарности WooCommerce
Чтобы отобразить настраиваемое поле на странице «Полученный заказ WooCommerce», мы будем использовать фильтр WooCommerce woocommerce_order_details_after_order_table
. Добавьте следующий код в файл functions.php:
add_filter('woocommerce_order_details_after_order_table', 'add_delivery_date_to_order_received_page', 10, 1); функция add_delivery_date_to_order_received_page ($order) { if( version_compare( get_option( 'woocommerce_version' ), '3.0.0', ">=" )) { $order_id = $order->get_id(); } еще { $order_id = $order->id; } $delivery_date = get_post_meta($order_id, '_delivery_date', true); если ( '' != $доставка_дата ) { эхо '<p><strong>' . __('Дата доставки', 'добавить_дополнительные_поля') . ':</strong> ' . $доставка_дата; } }
Это результат:
Как работает код
Я прикрепил add_delivery_date_to_order_received_page()
к фильтру WooCommerce. Параметр этой функции используется для получения идентификатора заказа. Идентификатор заказа необходим для получения выбранной даты доставки из таблицы wp_postmeta
.
Это результат:
Полный фрагмент кода
Если у вас возникли проблемы с выполнением руководства, вот полный фрагмент кода. Вставьте его в файл functions.php:
/* Название плагина: Добавить поля на странице оформления заказа WooCommerce. Описание: Простой демонстрационный плагин о том, как добавить дополнительные поля на страницу оформления заказа WooCommerce. */ add_action('woocommerce_after_checkout_billing_form', 'display_extra_fields_after_billing_address', 10, 1); функция display_extra_fields_after_billing_address () { _e("Дата доставки: ", "add_extra_fields"); ?> <br> <input type="text" name="add_delivery_date" class="add_delivery_date" placeholder="Дата доставки"> <скрипт> jQuery (документ) .ready (функция ($) { $(".add_delivery_date").datepicker({ минДата: 0, }); }); </скрипт> <?php } add_action('wp_enqueue_scripts', 'enqueue_datepicker'); функция enqueue_datepicker() { если (is_checkout()) { // Загружаем скрипт выбора даты (предварительно зарегистрированный в WordPress). wp_enqueue_script('jquery-ui-datepicker'); // Вам нужен стиль для выбора даты. Для простоты я сделал ссылку на размещенный в Google jQuery UI CSS. wp_register_style('jquery-ui', '//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css'); wp_enqueue_style('jquery-ui'); } } add_action('woocommerce_checkout_update_order_meta', 'add_order_delivery_date_to_order', 10, 1); функция add_order_delivery_date_to_order ( $order_id ) { if ( isset( $_POST ['add_delivery_date'] ) && '' != $_POST ['add_delivery_date'] ) { add_post_meta($order_id, '_delivery_date', sanitize_text_field($_POST ['add_delivery_date'] )); } } add_filter('woocommerce_email_order_meta_fields', 'add_delivery_date_to_emails', 10, 3); функция add_delivery_date_to_emails ($fields, $sent_to_admin, $order) { if( version_compare( get_option( 'woocommerce_version' ), '3.0.0', ">=" )) { $order_id = $order->get_id(); } еще { $order_id = $order->id; } $delivery_date = get_post_meta($order_id, '_delivery_date', true); если ( '' != $доставка_дата ) { $fields['Дата доставки'] = массив( 'label' => __('Дата доставки', 'add_extra_fields'), 'значение' => $delivery_date, ); } вернуть $поля; } add_filter('woocommerce_order_details_after_order_table', 'add_delivery_date_to_order_received_page', 10, 1); функция add_delivery_date_to_order_received_page ($order) { if( version_compare( get_option( 'woocommerce_version' ), '3.0.0', ">=" )) { $order_id = $order->get_id(); } еще { $order_id = $order->id; } $delivery_date = get_post_meta($order_id, '_delivery_date', true); если ( '' != $доставка_дата ) { эхо '<p><strong>' . __('Дата доставки', 'добавить_дополнительные_поля') . ':</strong> ' . $доставка_дата; } }
Вот и все!
Вывод
Таким образом, вы узнали, как добавить пользовательское поле даты в кассу, отобразить его в уведомлениях по электронной почте и отобразить на странице благодарности. Однако, если вы не знакомы с редактированием кода, вы можете использовать плагин настройки оформления заказа. Рекомендую использовать дочернюю тему, чтобы ваши изменения не потерялись при обновлении.
Похожие статьи
- Как добавить поле выбора в кассу WooCommerc
- Как настроить заполнитель поля WooCommerce Checkout
- Как скрыть товары без цены в WooCommerce
- Как скрыть товары без изображения в WooCommerce
- Как скрыть любую вкладку Страница моей учетной записи WooCommerce
- Как скрыть кнопку обновления корзины на странице корзины WooCommerce
- Как скрыть количество на складе в WooCommerce
- Как создать учетную запись в Checkout WooCommerce
- Как редактировать обязательные поля оформления заказа WooCommerce
- Как создать поля условной проверки WooCommerce
- Как редактировать шаблон страницы оформления заказа WooCommerce
- Как добавить страницу оформления заказа с номером НДС WooCommerce
- Как добавить скрытое поле на страницу оформления заказа WooCommerce
- Как переместить главное меню магазина WooCommerce
- Как скрыть стоимость доставки, если доступна бесплатная доставка WooCommerce
- Как добавить страницу оформления счета WooCommerce
- Как добавить дополнительное поле в форму оформления заказа WooCommerce
- Как добавить страну WooCommerce Checkout по умолчанию
- Как скрыть заголовок описания продукта WooCommerce