Отображение нескольких сгруппированных настраиваемых полей в уведомлениях по электронной почте WooCommerce.Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Отображение нескольких сгруппированных настраиваемых полей в уведомлениях по электронной почте WooCommerce.

Сообщение Anonymous »


Я создал несколько настраиваемых полей оформления заказа в зависимости от того, покупает ли клиент 1 или 2 товара. Поля называются: «Voorletters», «Roepnaam», «Achternaam» и «Geboortedatum». Код работает, поскольку данные отображаются в нашей серверной части Wordpress под соответствующими заказами, но мы также хотим включать их в наши электронные письма. В идеале мы хотели бы включить это в письмо о завершении заказа, которое клиент получает после успешной оплаты, а также в письмо с подтверждением, которое администратор получает при новом заказе.

На основе добавления нескольких настраиваемых полей оформления заказа, сгруппированных в два столбца в коде ответа WooCommerce, вот что у меня есть:

// Функция полезности: получение общего количества товаров в корзине для конкретного продукта функция get_specific_cart_item_quantity() { $targeted_id = 5027; // cart->get_cart() as $item) { if ( $item['product_id'] == $targeted_id ) { $item_qty += $item['количество']; } } вернуть $item_qty; } // Добавляем пользовательские поля оформления заказа add_action('woocommerce_checkout_before_customer_details', 'add_custom_checkout_fields'); функция add_custom_checkout_fields() { $item_qty = get_specify_cart_item_quantity(); если ($item_qty) { $домен = 'Woocommerce'; echo ' ' . __('Personsgegevens BHV', $domain) . ' ' . __('Vul aub de personsgegevens van de BHV kandidaten in hieronder.', $domain) . '
'; $qty1 = $item_qty % 2 == 0 ? $item_qty/2: ($item_qty == 1? 1: ($item_qty + 1)/2); $qty2 = $item_qty == 1 ? 1:2; // Многоцикл для отображения настраиваемых полей в зависимости от количества в 2 столбцах for ( $k = 1; $k 'текст', 'метка' => $метка, 'заполнитель' => '', 'class' => array('form-row-'.$class), 'required' => true // или false ), WC()->checkout->get_value($field)); } } } эхо ''; } } // Проверка пользовательских полей add_action( 'woocommerce_after_checkout_validation', 'validate_custom_checkout_fields', 10, 2); функция validate_custom_checkout_fields($data, $errors) { if (did_action('woocommerce_checkout_process') >= 2) return; $item_qty = get_specify_cart_item_quantity(); если ($item_qty) { $домен = 'Woocommerce'; $брейк = ложь; // 1-й цикл (буквы) foreach ( array('Voorletters', 'Roepnaam', 'Achternaam', 'Geboortedatum') as $letter ) { $key = strtolower($letter); // 2-й цикл (числа) for ($i = 1; $i add( 'проверка', __('Vul a.u.b. de verplichte velden in.', $domain), 'error' ); $брейк = правда; перерыв; } } если ($break) сломать; } } } // Сохраняем данные настраиваемого поля как метаданные настраиваемого заказа add_action( 'woocommerce_checkout_create_order', 'save_custom_checkout_fields', 10, 2); функция save_custom_checkout_fields($order, $data) { $item_qty = get_specify_cart_item_quantity(); если ($item_qty) { // 1-й цикл (буквы) foreach ( array('Voorletters', 'Roepnaam', 'Achternaam', 'Geboortedatum') as $letter ) { $key = strtolower($letter); // 2-й цикл (числа) for ($i = 1; $i update_meta_data($field, sanitize_text_field($_POST[$field]) ); } } } } }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»