Как добавить пользовательское поле оформления заказа в электронную почту WooCommerce
Опубликовано: 2020-12-17Вы хотите добавить настраиваемое поле оформления заказа в электронную почту в своем магазине 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