Как добавить пользовательское поле оформления заказа в электронную почту WooCommerce
Опубликовано: 2020-12-17 Вы хотите добавить настраиваемое поле оформления заказа в электронную почту в своем магазине WooCommerce?
 Вы хотите добавить настраиваемое поле оформления заказа в электронную почту в своем магазине WooCommerce? 
WooCommerce — это мощный плагин электронной коммерции для WordPress, который легко настраивается.
В этом посте вы увидите, как вы можете динамически настраивать дополнительные поля, такие как удаление платежного адреса, добавление/редактирование настраиваемых полей оформления заказа и сохранение этих настраиваемых полей в базе данных. Кроме того, я покажу вам, как вы можете добавить эти настраиваемые поля для заказа электронных писем.
Удалить дополнительную информацию из настраиваемых полей оформления заказа
Первый шаг — добавить пользовательский фрагмент кода PHP в файл function.php вашей темы, чтобы удалить поля адреса с экрана выставления счетов:
 функция woocommerce_remove_additional_information_checkout($fields){
    unset( $fields["billing_first_name"] );
    unset( $fields["billing_last_name"] );
    вернуть $поля;
}
add_filter('woocommerce_billing_fields', 'woocommerce_remove_additional_information_checkout'); Это результат:  
 
Следующие фрагменты кода добавят настраиваемое поле на страницу оформления заказа, сохранят данные в метаданные заказа и отобразят метаданные заказа в администраторе заказов. Я получил несколько запросов о процессе добавления нескольких полей. Чтобы решить эту проблему, мы добавим фрагмент кода для добавления двух полей.
Добавить пользовательское поле оформления заказа в электронную почту WooCommerce
Фрагменты кода должны быть добавлены в файл functions.php вашей темы. Рекомендую использовать дочернюю тему, чтобы ваши изменения не потерялись при обновлении.
1. Добавьте пользовательское поле оформления заказа WooCommerce
Добавьте следующий код в файл functions.php, чтобы добавить пользовательское поле оформления заказа WooCommerce:
 функция njengah_custom_checkout_fields($fields){
$fields['njengah_extra_fields'] = массив(
'njengah_text_field' => массив(
'тип' => 'текст',
'требуется' => правда,
'label' => __('Введите текстовое поле')
),
'njengah_dropdown' => массив(
'тип' => 'выбрать',
'options' => массив( 'первый' => __('первый вариант'), 'второй' => __('второй вариант'), 'третий' => __('третий вариант')),
'требуется' => правда,
'метка' => __('Выпадающее поле')
)
);
вернуть $поля;
}
add_filter('woocommerce_checkout_fields', 'njengah_custom_checkout_fields');
функция njengah_extra_checkout_fields(){
$checkout = WC()->checkout(); ?>
<div class="дополнительные поля">
<h3><?php _e('Дополнительные поля'); ?></h3>
<?php
foreach ($checkout->checkout_fields['njengah_extra_fields'] as $key => $field): ?>
<?php woocommerce_form_field($key, $field, $checkout->get_value($key)); ?>
<?php endforeach; ?>
</div>
<?php }
add_action('woocommerce_checkout_after_customer_details','njengah_extra_checkout_fields'); Это результат: 
2. Сохраните данные пользовательских полей WooCommerce Checkout
Добавьте следующий код в файл functions.php, чтобы сохранить данные пользовательских полей оформления заказа WooCommerce.
 функция njengah_save_extra_checkout_fields ($order_id, $posted){
// не забывайте о соответствующей очистке, если вы используете другой тип поля
если ( isset ( $ опубликовано ['njengah_text_field'] )) {
update_post_meta($order_id, '_njengah_text_field', sanitize_text_field($posted['njengah_text_field'] ));
}
if(isset($posted['njengah_dropdown']) && in_array($posted['njengah_dropdown'], array('первый', 'второй', 'третий') )) {
update_post_meta($order_id, '_njengah_dropdown', $posted['njengah_dropdown'] );
}
}
add_action('woocommerce_checkout_update_order_meta', 'njengah_save_extra_checkout_fields', 10, 2);3. Отображение данных пользовательских полей WooCommerce для пользователя
Добавьте следующий код в файл functions.php, чтобы отобразить пользователю данные настраиваемых полей WooCommerce.
 функция njengah_display_order_data( $order_id ){ ?>
<h2><?php _e('Дополнительная информация'); ?></h2>
<table class="shop_table shop_table_responsive Additional_info">
<tbody>
<tr>
<th><?php _e('Введите текстовое поле:'); ?></th>
<td><?php echo get_post_meta($order_id, '_njengah_text_field', true); ?></тд>
</tr>
<tr>
<th><?php _e('Выпадающее поле:'); ?></th>
<td><?php echo get_post_meta($order_id, '_njengah_dropdown', true); ?></тд>
</tr>
</tbody>
</таблица>
<?php }
add_action('woocommerce_thankyou', 'njengah_display_order_data', 20);
add_action('woocommerce_view_order', 'njengah_display_order_data', 20); Это результат: 

4. Отображение пользовательских полей заказа администратора WooCommerce
Этот фрагмент кода будет функционировать как данные об адресе доставки и выставлении счетов, а также раскрывать входные данные, когда пользователь щелкает значок маленького карандаша.
 функция njengah_display_order_data_in_admin($order){ ?>
<div class="order_data_column">
<h4><?php _e('Дополнительная информация', 'woocommerce'); ?><a href="#" class="edit_address"><?php _e('Edit', 'woocommerce'); ?></а></h4>
<див класс="адрес">
<?php
эхо '<p><strong>' . __( 'Текстовое поле' ) . ':</strong>' . get_post_meta($order->id, '_njengah_text_field', true). '</p>';
эхо '<p><strong>' . __( 'Падать' ) . ':</strong>' . get_post_meta($order->id, '_njengah_dropdown', true). '</p>'; ?>
</div>
<div class="edit_address">
<?php woocommerce_wp_text_input(array('id' => '_njengah_text_field', 'label' => __('Some field'), 'wrapper_class' => '_billing_company_field')); ?>
<?php woocommerce_wp_text_input(array('id' => '_njengah_dropdown', 'label' => __('Другое поле'), 'wrapper_class' => '_billing_company_field')); ?>
</div>
</div>
<?php }
add_action('woocommerce_admin_order_data_after_order_details', 'njengah_display_order_data_in_admin');
функция njengah_save_extra_details($post_id, $post){
update_post_meta($post_id, '_njengah_text_field', wc_clean($_POST['_njengah_text_field']));
update_post_meta($post_id, '_njengah_dropdown', wc_clean($_POST['_njengah_dropdown']));
}
add_action('woocommerce_process_shop_order_meta', 'njengah_save_extra_details', 45, 2); Это результат: 
5. Добавьте настраиваемые поля WooCommerce в электронные письма для заказа
Добавьте следующий код в файл functions.php, чтобы добавить настраиваемые поля WooCommerce для заказа электронных писем. Если вы хотите настроить вывод в электронных письмах, вы можете добавить текст к любому из крючков, доступных в шаблонах электронной почты.
 функция njengah_email_order_meta_fields($fields, $sent_to_admin, $order) {
$fields['instagram'] = массив(
'метка' => __('Некоторое поле'),
'value' => get_post_meta($order->id, '_njengah_text_field', true),
);
$fields['лицензия'] = массив(
'метка' => __('Другое поле'),
'value' => get_post_meta($order->id, '_njengah_dropdown', true),
);
вернуть $поля;
}
add_filter('woocommerce_email_order_meta_fields', 'njengah_email_order_meta_fields', 10, 3 );
function njengah_show_email_order_meta($order, $sent_to_admin, $plain_text) {
$njengah_text_field = get_post_meta($order->id, '_njengah_text_field', true);
$njengah_dropdown = get_post_meta($order->id, '_njengah_dropdown', true);
если($простой_текст){
echo 'Значение некоторого поля равно ' . $njengah_text_field . ' в то время как значение другого поля равно ' . $njengah_dropdown;
} еще {
echo '<p>Значение для <strong>текстового поля ввода</strong> равно ' . $njengah_text_field. ' в то время как значение <strong>раскрывающегося списка</strong> равно ' . $njengah_dropdown . '</p>';
}
}
add_action('woocommerce_email_customer_details', 'njengah_show_email_order_meta', 30, 3 );Вывод
Таким образом, я показал, как вы можете добавлять, редактировать и сохранять настраиваемые поля на странице оформления заказа WooCommerce. Кроме того, я отредактировал шаблоны электронной почты, чтобы добавить информацию из настраиваемых полей электронной почты. Если вам нужно дополнительно настроить страницу оформления заказа, вы можете использовать плагин настройки оформления заказа.
Похожие статьи
- Как добавить пользовательское текстовое поле Woocommerce на страницу продукта
- Как создать пользовательскую область виджетов в WordPress шаг за шагом
- Как переместить главное меню магазина WooCommerce
- Как скрыть стоимость доставки, если доступна бесплатная доставка WooCommerce
- Как скрыть количество на складе в WooCommerce
- Как скрыть SKU, категорию, теги мета-страницы продукта WooCommerce
- Как скрыть кнопку обновления корзины на странице корзины WooCommerce
- Как скрыть заголовок описания продукта WooCommerce
- Как скрыть любую вкладку Страница моей учетной записи WooCommerce
- Как изменить сообщения об ошибках WooCommerce Checkout
