Добавьте кнопку в заказы администратора WooCommerce, которая отправляет пользовательское уведомление по электронной почт ⇐ Jquery
-
Гость
Добавьте кнопку в заказы администратора WooCommerce, которая отправляет пользовательское уведомление по электронной почт
В настоящее время я работаю над проектом, который предполагает внедрение кнопки уведомления, которая будет оповещать наших водителей по электронной почте, когда заказ готов к выдаче. Однако я столкнулся с загадочной проблемой, которая заставила меня почесать голову.
Вот ситуация: при каждом нажатии кнопки уведомления статус заказа необъяснимым образом меняется на «ожидает оплаты». Это нежелательное поведение, и я пытаюсь определить причину этой проблемы.
add_action( 'woocommerce_admin_order_data_after_order_details', 'send_driver_email_on_order_ready'); функция send_driver_email_on_order_ready ($order_id) { $order = wc_get_order($order_id); $id=$order->get_ID(); $status = $order->get_status(); $meta_data = $order->get_meta_data(); if($status=='обработка' || 'назначено драйвером' || 'выведено для доставки'){ foreach ($meta_data как $meta) { if ($meta->key === 'lddfw_driverid') { $driver_id = $meta->value; } if ($meta->key === 'Order_Ready') { $order_ready_value = $meta->value; if ($order_ready_value === 'Да') { // Проверяем, отправлено ли уже письмо $email_sent = $order->get_meta('email_sent', true); if ($email_sent != 'Да') { // Получаем информацию о драйвере $driver = get_userdata($driver_id); $driver_name = $driver->display_name; $driver_email = $driver->user_email; // Отправляем письмо водителю $subject = 'Номер заказа' . $идентификатор. ' готов'; $сообщение = 'Привет'. $driver_name . ',
Заказ №' . $идентификатор. ' теперь готово к выдаче.'; $headers = array('Content-Type: text/html; charset=UTF-8'); if ( wp_mail($driver_email, $subject, $message, $headers)) { // Обновляем метазначение email_sent $order->update_meta_data('email_sent', 'Да'); $order->сохранить(); } } } } } } } add_filter('wp_mail_from', 'original_mail_address_email'); функция original_mail_address_email(){ $email ='admin@gmail.com'; вернуть $email; } add_filter('wp_mail_from_name', 'email_name_order_ready'); функция email_name_order_ready(){ вернуть «Свежий в духовке»; }
Помимо этой задачи я хотел бы улучшить функциональность кнопки. В идеале я хочу, чтобы кнопка отображалась только тогда, когда статус заказа «назначен водитель» или «готов к доставке». Это упростит процесс и сделает его более эффективным для нашей команды.
Будем очень признательны за любую помощь, информацию или предложения, которые вы можете предоставить. Ваша помощь будет не чем иным, как благословением.
В настоящее время я работаю над проектом, который предполагает внедрение кнопки уведомления, которая будет оповещать наших водителей по электронной почте, когда заказ готов к выдаче. Однако я столкнулся с загадочной проблемой, которая заставила меня почесать голову.
Вот ситуация: при каждом нажатии кнопки уведомления статус заказа необъяснимым образом меняется на «ожидает оплаты». Это нежелательное поведение, и я пытаюсь определить причину этой проблемы.
add_action( 'woocommerce_admin_order_data_after_order_details', 'send_driver_email_on_order_ready'); функция send_driver_email_on_order_ready ($order_id) { $order = wc_get_order($order_id); $id=$order->get_ID(); $status = $order->get_status(); $meta_data = $order->get_meta_data(); if($status=='обработка' || 'назначено драйвером' || 'выведено для доставки'){ foreach ($meta_data как $meta) { if ($meta->key === 'lddfw_driverid') { $driver_id = $meta->value; } if ($meta->key === 'Order_Ready') { $order_ready_value = $meta->value; if ($order_ready_value === 'Да') { // Проверяем, отправлено ли уже письмо $email_sent = $order->get_meta('email_sent', true); if ($email_sent != 'Да') { // Получаем информацию о драйвере $driver = get_userdata($driver_id); $driver_name = $driver->display_name; $driver_email = $driver->user_email; // Отправляем письмо водителю $subject = 'Номер заказа' . $идентификатор. ' готов'; $сообщение = 'Привет'. $driver_name . ',
Заказ №' . $идентификатор. ' теперь готово к выдаче.'; $headers = array('Content-Type: text/html; charset=UTF-8'); if ( wp_mail($driver_email, $subject, $message, $headers)) { // Обновляем метазначение email_sent $order->update_meta_data('email_sent', 'Да'); $order->сохранить(); } } } } } } } add_filter('wp_mail_from', 'original_mail_address_email'); функция original_mail_address_email(){ $email ='admin@gmail.com'; вернуть $email; } add_filter('wp_mail_from_name', 'email_name_order_ready'); функция email_name_order_ready(){ вернуть «Свежий в духовке»; }
Помимо этой задачи я хотел бы улучшить функциональность кнопки. В идеале я хочу, чтобы кнопка отображалась только тогда, когда статус заказа «назначен водитель» или «готов к доставке». Это упростит процесс и сделает его более эффективным для нашей команды.
Будем очень признательны за любую помощь, информацию или предложения, которые вы можете предоставить. Ваша помощь будет не чем иным, как благословением.
Мобильная версия