Как получить список товаров из заказа на электронную почту?Php

Кемеровские программисты php общаются здесь
Ответить
Гость
 Как получить список товаров из заказа на электронную почту?

Сообщение Гость »


Первая часть вопроса ЗДЕСЬ.

Мне нужно получить список товаров из подзаказа, получивших статус «отправлено» или «готово к сбору», внутри $message_body = .

Для этого мне посоветовали использовать $order->get_items() в цикле foreach, как описано ЗДЕСЬ.

Проблемы:
[*]
Мне удалось получить только 1 товар из моего заказа. Если в заказе 2 и более позиций, я все равно получаю в письме 1 вещь. те. Я получаю только: Золотое кольцо, когда заказывать: Золотое кольцо, цепочка, очки
[*]
Как получить изображение каждого продукта?

Любая помощь очень ценится.

// Включаем пользовательские статусы для заказов WooCommerce add_action('init', 'register_custom_order_statuses'); функция register_custom_order_statuses() { Register_post_status('Туалет отправлен', массив( 'label' => __( 'Отправлено', 'woocommerce'), 'публичный' => правда, 'exclude_from_search' => ложь, 'show_in_admin_all_list' => правда, 'show_in_admin_status_list' => правда, 'label_count' => _n_noop('Отправлено (%s)', 'Отправлено (%s)') )); Register_post_status('wc-readytocollect', массив( 'label' => __( 'Готово забрать', 'woocommerce'), 'публичный' => правда, 'exclude_from_search' => ложь, 'show_in_admin_all_list' => правда, 'show_in_admin_status_list' => правда, 'label_count' => _n_noop('Готов собрать (%s)', 'Готов собрать (%s)' ) )); } // Добавляем пользовательский статус заказа в список статусов заказов WC add_filter('wc_order_statuses', 'add_custom_order_statuses'); функция add_custom_order_statuses($order_statuses) { $new_order_statuses = массив(); // добавляем новый статус заказа перед обработкой foreach ($order_statuses as $key => $status) { $new_order_statuses[$key] = $status; if ('wc-processing' === $key) { $new_order_statuses['wc-shipped'] = __('Отправлено', 'woocommerce'); $new_order_statuses['wc-readytocollect'] = __('Готово забрать', 'woocommerce' ); } } верните $new_order_statuses; } // Отправляем персонализированные уведомления по электронной почте только для дополнительных заказов add_action( 'woocommerce_order_status_changed', 'custom_order_statuses_email_notifications', 10, 4); function custom_order_statuses_email_notifications ($order_id, $from_status, $to_status, $order) { // Таргетинг только на подзаказы if ( ! $order->get_parent_id() ) return; if ($to_status === 'отправлено') { $status_label = __('отправлено', 'woocommerce'); $status_label_soobshenie = __('отправлено', 'woocommerce'); } elseif ($to_status === 'готово собирать') { $status_label = __('готово к сбору', 'woocommerce'); $status_label_soobshenie = __('готово к сбору', 'woocommerce'); } если ( isset($status_label)) { $mailer = WC()->mailer(); // загружаем класс почтовой программы. $email_subject = sprintf( __('готов собрать %s %s'), $order->get_order_number(), $status_label); // получаем экземпляр объекта WC_Order foreach($order->get_items() как $item_id => $item){ $product_name = $item['name']; // Название продукта $item_qty = $item['количество']; // Количество $line_total = $item['промежуточный итог']; // или $item['line_subtotal'] $message_body = ' '.$status_label.' '.$status_label_soobshenie.'


'.$product_name.' '.$item_qty.' '.$line_total.' '; } $message = $mailer->wrap_message($email_subject, $message_body); $mailer->send($order->get_billing_email(), $email_subject, $message); // Отправляем письмо } }
Ответить

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

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

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

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

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