Как добавить пользовательское поле оформления заказа в электронную почту 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. Кроме того, я отредактировал шаблоны электронной почты, чтобы добавить информацию из настраиваемых полей электронной почты. Если вам нужно дополнительно настроить страницу оформления заказа, вы можете использовать плагин настройки оформления заказа.

Похожие статьи