В настоящее время я пытаюсь добавить электронные письма из своего настраиваемого поля оформления заказа в список получателей копий для обработки и электронных писем о выполненных заказах.
Я использовал этот код для создания повторяющихся наборов сообщений настраиваемые поля в зависимости от количества товара в корзине.
И это работает чудесно, собирая данные и т. д. Были небольшие сбои с шаблоном проверки Divi, но когда я снова переключился на короткий код проверки woocommerce по умолчанию, данные из этих полей собираются.
Одним из этих полей является адрес электронной почты участника, в котором собраны адреса электронной почты всех студентов курса. Их я хотел бы включить в поле «Копия» для уведомлений по электронной почте о статусе заказа «Обработка» и «Выполнено».
Я пытался изменить этот код:
В настоящее время я пытаюсь добавить электронные письма из своего настраиваемого поля оформления заказа в список получателей копий для обработки и электронных писем о выполненных заказах. Я использовал этот код для создания повторяющихся наборов сообщений настраиваемые поля в зависимости от количества товара в корзине. [code]add_action( 'woocommerce_before_order_notes', 'persons_details' ); function persons_details( $checkout ) { $count = WC()->cart->get_cart_contents_count(); $i = 0;
add_action( 'woocommerce_checkout_create_order', 'save_custom_checkout_field_order_meta' ); function save_custom_checkout_field_order_meta( $order ) { $count = WC()->cart->get_cart_contents_count(); $order->update_meta_data( 'cstm_items_count', intval($count) ); // Save the cart contents count as meta data
add_action( 'woocommerce_email_order_meta', 'add_email_custom_order_meta', 10, 3 ); function add_email_custom_order_meta( $order, $sent_to_admin, $plain_text ){ $quantity = $order->get_meta('cstm_items_count'); // Get items quantity count from meta data
add_action( 'woocommerce_admin_order_data_after_order_details', 'display_custom_fields_in_admin_order_pages' ); function display_custom_fields_in_admin_order_pages( $order ){ $quantity = $order->get_meta('cstm_items_count'); // Get items quantity count from meta data
$i = 0; for($k=1; $kadd( 'cstm_full_name'.$i, __( "Prosím vyplňte povinné pole u Účastníka $i \"Jméno a Příjmení\"" ), 'error' ); } if ( isset($_POST['cstm_email'.$i]) && empty($_POST['cstm_email'.$i]) ) { $errors->add( 'cstm_email'.$i, __( "Prosím vyplňte povinné pole u Účastníka $i \"Email\"" ), 'error' ); } if ( isset($_POST['cstm_phone'.$i]) && empty($_POST['cstm_phone'.$i])) { $errors->add( 'cstm_phone'.$i, __( "Prosím vyplňte povinné pole u Účastníka $i \"Telefon\"" ), 'error' ); } if ( isset($_POST['cstm_bdate'.$i]) && empty($_POST['cstm_bdate'.$i])) { $errors->add( 'cstm_bdate'.$i, __( "Prosím vyplňte povinné pole u Účastníka $i \"Datum narození\"" ), 'error' ); } } } [/code] И это работает чудесно, собирая данные и т. д. Были небольшие сбои с шаблоном проверки Divi, но когда я снова переключился на короткий код проверки woocommerce по умолчанию, данные из этих полей собираются. Одним из этих полей является адрес электронной почты участника, в котором собраны адреса электронной почты всех студентов курса. Их я хотел бы включить в поле «Копия» для уведомлений по электронной почте о статусе заказа «Обработка» и «Выполнено». Я пытался изменить этот код: [code]add_filter( 'woocommerce_email_headers', 'student_email_notification', 20, 3 ); function student_email_notification( $header, $email_id, $order ) { // Only for 'wc_course_order' notification if( 'wc_course_order' != $email_id ) return $header;
$student_emails = array(); $enroll_num = 0;
// Loop though Order IDs foreach( $order->get_items() as $item_id => $item_data ){ $course_qty = $item_data->get_quantity(); $q = 1; while ( $q 0 ){ // Remove duplicates (if there is any) $student_emails = array_unique($student_emails); // Add the emails to existing recipients $header .= 'Bcc: ' . implode(',', $student_emails) . "\r\n"; } return $header; } [/code] Но не смог заставить его работать. Что я делаю не так?