При работе с вродпрессом и интернет магазине на woocommerce, вы можете столкнуться с ситуацией, когда вам необходимо отправлять письмо при смене статуса заказа.
К примеру при статусе completed отправляется письмо клиенту, но у вас ведь может возникнуть необходимость отправить письмо еще кому-нибудь, например менеджеру или администратору магазина.
Для этого наверняка есть какие-нибудь плагины, но на самом деле данную проблему, можно решить в пару строчек кода в файле functions.php, который должен находится в вашем шаблоне
Способ номер 1:
add_filter('woocommerce_order_status_completed', 'competedStatusOrder'); function competedStatusOrder( $order_id ) { /* $OrderInfo = wc_get_order( $order_id ); $email_notifications = WC()->mailer()->get_emails(); $email_subject = $email_notifications['WC_Email_Customer_Completed_Order']->get_default_subject(); $site_title = get_bloginfo('name'); $email_subject = str_replace("{site_title}",$site_title,$email_subject); $email_heading = $email_notifications['WC_Email_Customer_Completed_Order']->get_default_heading(); $args = array( 'order' => $OrderInfo, 'email_heading' => $email_heading, 'sent_to_admin' => false, 'plain_text' => false, ); $content_info = wc_get_template_html("emails/customer-completed-order.php",$args); */ $headers= "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=utf8\r\n"; $content_info = "Текст письма, которое будет отправляться при смене статуса на completed"; $email_subject = "Тема письма, которое будет отправляться при смене статуса на completed"; $WC_Email = new WC_Email(); $WC_Email->send( 'youremail@mail.com', $email_subject, $content_info, $headers, $attachments ); }
Функция competedStatusOrder будет срабатывать, когда статус поменяют на completed.
В этом коде есть закоментированная часть, это пример, если вам надо отправить письмо по шаблону, как оно уходит клиенту.
Если вам нужно отправлять письма при других статусах, то используйте хуки:
add_action('woocommerce_order_status_pending_paymen', 'my_func_1'); - получил заказ add_action('woocommerce_order_status_failed', 'my_func_1'); - не смог оплатить или отклонили оплату add_action('woocommerce_order_status_processing', 'my_func_1'); - заказ в ожидании исполнения add_action('woocommerce_order_status_completed', 'my_func_1'); - заказ выполнен add_action('woocommerce_order_status_on-hold', 'my_func_1'); - ожидание оплаты, кол-во продукта изменилось add_action('woocommerce_order_status_cancelled', 'my_func_1'); - заказ отменен add_action('woocommerce_order_status_refunded', 'my_func_1'); - заказ возвращен администратором
Второй способ более простой, он заключается в том, что мы просто добавим в получатели, email, который нам необходим:
add_action( 'woocommerce_email_recipient_customer_completed_order', 'your_email_recipient_filter_function', 10, 2); function your_email_recipient_filter_function($recipient, $object) { $recipient = $recipient.", youremail@mail.com"; return $recipient; }
В данном случае $recipient - это почта клиента, минус такого способа, то что клиент будет видеть в получателях почту, которую вы добавите, а это как правило не нужно.
На этом все, если появятся вопросы, то пишите, постараюсь ответить.