Как добавить поле даты для оформления заказа в 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
