WooCommerce: inviare le informazioni per il tracciamento della spedizione

WooCommerce: inviare le informazioni per il tracciamento della spedizione

In WooCommerce possiamo inviare agli utenti il nome del corriere e il tracking number usati nelle spedizioni.

Aggiungiamo una metabox con i campi per inserire il nome del corriere e il tracking number nel singolo ordine. Ricordiamo che in WooCommerce gli ordini sono custom post type:


add_action( 'add_meta_boxes', 'my_add_order_tracking_meta_box' );

function my_add_order_tracking_meta_box() {
    add_meta_box( 'woocommerce-myplugin', 'Tracking', 'my_meta_box_view', 'shop_order', 'side', 'high');
}

function my_meta_box_view() {
    global $post;

    echo '<p class="form-field">';
    
    woocommerce_wp_text_input(array(
       'id' => 'my_carrier',
       'label' => 'Corriere',
       'placeholder' => 'Corriere',
       'description' => 'Corriere',
       'class' => '',
       'value' => get_post_meta( $post->ID, '_my_carrier', true ),
    ));
    echo '</p>';
    
    echo '<p class="form-field">';
    
    woocommerce_wp_text_input(array(
       'id' => 'my_tracking_number',
       'label' => 'Tracking Number',
       'placeholder' => 'Tracking Number',
       'description' => 'Tracking Number',
       'class' => '',
       'value' => get_post_meta( $post->ID, '_my_tracking_number', true ),
    ));
    echo '</p>';
}

add_action( 'woocommerce_process_shop_order_meta', 'my_save_tracking_details_for_orders' );

function my_save_tracking_details_for_orders( $post_id ) {
  if ( isset( $_POST['my_tracking_number'] ) ) {
    update_post_meta( $post_id, '_my_carrier', wc_clean( $_POST['my_carrier'] ) );
    update_post_meta( $post_id, '_my_tracking_number', wc_clean( $_POST['my_tracking_number'] ) );
  }
}

Quindi aggiungiamo il nome del corriere e il tracking number all'email che viene inviata quando l'ordine è completato:


add_action( 'woocommerce_email_before_order_table', 'my_add_tracking' );

function my_add_tracking( $post ) {
    if ( isset( $_POST['wc_order_action'] ) || isset ( $_POST['order_status'] ) ) {
        $request = $_POST['wc_order_action'];
        $request_status = $_POST['order_status'];
        if( $request =='send_email_customer_completed_order' || $request_status == 'wc-completed' ) {
            $carrier = get_post_meta( $post->ID, '_my_carrier', true );
            $tracking = get_post_meta( $post->ID, '_my_tracking_number', true );
            $html = '<p>Corriere: ' . $carrier . '<br>Tracking Number: ' . $tracking . '</p>';
            echo $html;
        }
    }
}

Torna su