Yêu cầu đưa ra là nhân viên quản lý đơn hàng cần cc email tới các bộ phận liên quan như: ban giám đốc, bộ phận giao hàng…
Giải bài:
Sẽ như hình bên dưới: (khi click vào nút duyệt và gửi email thì sẽ gửi đến list email), list email này bạn có thể tạo option để lưu hoặc hard code vào trong function gửi email và code để add vào xem dưới hình
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
add_action('woocommerce_order_item_add_action_buttons', array($this,'add_button_approve_by_staff')); function add_button_approve_by_staff($order){ $items = $order->get_items(); $first_product_id = 0; $product_categories_array = array(); foreach ( $items as $item ) { //$product_name = $item->get_name(); $product_id = $item->get_product_id(); if(is_numeric($product_id)){ //$first_product_id = $product_id ; //get product category $product_categories = get_the_terms( $product_id, "product_cat" ); if($product_categories){ foreach ( $product_categories as $product_category ){ array_push($product_categories_array, $product_category->term_id); } } } } $product_categories = implode(",", array_unique($product_categories_array)); if('completed' != $order->get_status()){ ?> <button type="button" class="button add_button_approve_by_staff" data-product_categories = "<?php echo $product_categories; ?>" data-order_id = "<?php echo $order->get_id(); ?>">Duyệt và gửi email</button> <?php } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
$(document).on('click', '.add_button_approve_by_staff', function(e){ e.preventDefault(); var text = "Duyệt đơn hàng và gửi email?"; if (confirm(text) == true) { var submit_data = { action: 'approve_by_staff', order_id: $(this).data('order_id'), product_categories: $(this).data('product_categories') }; $('.add_button_approve_by_staff').html('<span class="spinner is-active"></span> Duyệt và gửi email cho Ban lãnh đạo cty'); console.log(submit_data); $.ajax({ type: 'POST', url: add_button_approve_by_staff_vars.ajax_url, data: submit_data, success: function ( response ) { console.log(response); if (response.success ) { alert('Đã duyệt và gửi email xong!'); $('.add_button_approve_by_staff').html('Duyệt và gửi email'); location.reload(); } } }); } }); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
add_action("wp_ajax_approve_by_staff",array($this,'approve_by_staff_handle')); add_action("wp_ajax_nopriv_approve_by_staff",array($this,'approve_by_staff_handle')); function approve_by_staff_handle(){ $order_id = $_POST['order_id']; $product_categories = explode(",", $_POST['product_categories']); $email_array = array(); if($product_categories){ foreach($product_categories as $product_category){ $_order_statistics = !empty(get_term_meta($product_category,'_order_statistics', true)) ? get_term_meta($product_category,'_order_statistics', true) : 0; $_order_statistics = $_order_statistics +1; update_term_meta($product_category, '_order_statistics', $_order_statistics); $email_list = get_field("email_list", "product_cat_".$product_category); if($email_list){ foreach($email_list as $item){ array_push($email_array,$item['email']); } } } } $email_array = array_unique($email_array); $results = $this->send_email_to_leader_of_company($order_id, $email_array); $order = wc_get_order($order_id); $order->set_status('completed'); $order->save(); wp_send_json_success($product_categories); } function send_email_to_leader_of_company($order_id, $email_array){ $order = wc_get_order($order_id); $prefix_subject_email = !empty(get_field("prefix_subject_email", "option")) ? get_field("prefix_subject_email", "option") : '[STDN.VN]'; $email_of_leader = $email_array; if(!empty($email_of_leader)){ $to = $email_of_leader; ob_start(); include(get_stylesheet_directory().'/includes/email/email-to-leader.php'); $body = ob_get_contents(); ob_end_clean(); $subject = $prefix_subject_email.' Đơn hàng mới #'.$order_id; $headers = array('Content-Type: text/html; charset=UTF-8'); wp_mail( $to, $subject, $body, $headers ); } return $email_of_leader; } |
Cơ bản anh chị chỉ cần vào thư mực woocommerce copy các file templates/emails copy các file liên quan trong code bỏ vào cụ thể như bên dưới
1 2 3 4 5 6 7 8 9 10 |
<?php $email_heading = "Đơn hàng mới: #".$order_id; $plain_text = false; ?> <?php include(get_stylesheet_directory().'/includes/email/email-header.php'); ?> <?php /* translators: %s: Customer billing full name */ ?> <p><?php printf( esc_html__( 'Bạn vừa nhận được đơn hàng từ %s. Đơn hàng như sau:' ), $order->get_formatted_billing_full_name() );?> </p> <?php include(get_stylesheet_directory().'/includes/email/email-order-details.php'); ?> <?php include(get_stylesheet_directory().'/includes/email/email-addresses.php'); ?> <?php include(get_stylesheet_directory().'/includes/email/email-footer.php'); ?> |
Mọi sự sao chép xin ghi rõ nguồn là fcwordpress.net
Chuyên trang về wordpress: hướng dẫn thiết kế theme, plugin, thủ thuật wordpress