У меня есть несколько пользовательских полей проверки WooCommerce в виде раскрывающихся меню. Я хочу, чтобы любые параметры, выбранные в этих раскрывающихся списках, отображались в деталях заказа на стороне администратора, а также в электронных письмах о заказе. Однако я не могу заставить это работать. Все, что выбрано в раскрывающихся списках, не отображается в электронных письмах или на стороне администратора в деталях заказа, чего я и хочу.
Я хочу сохранить информацию из раскрывающихся списков в заказать метаданные, и именно этого я хочу добиться с помощью своего кода. Работает создание раскрывающихся списков, а также изменение общей суммы заказа в зависимости от того, выбрана ли служба доставки. Если выбран вариант «Самовывоз», появляется второй раскрывающийся список, который позволяет клиенту выбрать место получения. Информация из обоих этих раскрывающихся списков должна отображаться в сведениях о заказе на стороне администратора, а также во всех электронных письмах о заказе, в которых отображаются сведения о заказе.
Я пытался использовать woocommerce_checkout_create_order, чтобы сохранить _delivery_or_pickup и _pickup_location непосредственно в мета-заказ во время создания заказа, а затем используйте woocommerce_admin_order_data_after_order_details для наиболее единообразного отображения в панели администратора WooCommerce. Хук woocommerce_email_order_meta предназначен для отображения настраиваемых полей как в электронных письмах администратора, так и в электронных письмах клиентов.
Мой код выглядит следующим образом:
// Add custom fields to the checkout page
add_action('woocommerce_before_order_notes', 'add_delivery_or_pickup_fields');
function add_delivery_or_pickup_fields($checkout) {
// First dropdown for Delivery or Pickup
woocommerce_form_field('delivery_or_pickup', array(
'type' => 'select',
'class' => array('form-row-wide'),
'label' => __('Delivery or Pickup?', 'woocommerce'),
'required' => true,
'options' => array(
'' => __('Select an option', 'woocommerce'),
'delivery' => __('Delivery Service', 'woocommerce'),
'pickup' => __('Pickup', 'woocommerce')
),
), $checkout->get_value('delivery_or_pickup'));
// Second dropdown for pickup location (initially hidden, shown via JavaScript)
woocommerce_form_field('pickup_location', array(
'type' => 'select',
'class' => array('form-row-wide', 'pickup-location-field'), // 'pickup-location-field' class used to control visibility
'label' => __('Select pickup location:', 'woocommerce'),
'options' => array(
'' => __('Select a location', 'woocommerce'),
'main_office' => __('Pavia 20F - Main Office', 'woocommerce'),
'kaminis_kitchen' => __('Kamini\'s Kitchen (Baby Beach)', 'woocommerce')
),
), $checkout->get_value('pickup_location'));
// JavaScript to toggle visibility of the pickup location dropdown and update delivery fee
?>
jQuery(document).ready(function($) {
$('.pickup-location-field').hide();
$('#delivery_or_pickup').change(function() {
if ($(this).val() === 'pickup') {
$('.pickup-location-field').show();
} else {
$('.pickup-location-field').hide();
}
var deliveryOrPickup = $(this).val();
$.ajax({
type: 'POST',
url: wc_checkout_params.ajax_url,
data: {
action: 'save_delivery_or_pickup_to_session',
delivery_or_pickup: deliveryOrPickup,
},
success: function() {
$('body').trigger('update_checkout');
}
});
}).change();
});
Подробнее здесь: https://stackoverflow.com/questions/791 ... otificatio
Отображение значений пользовательских полей оформления заказа WooCommerce в заказах и уведомлениях по электронной почте. ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение