Display last WooCommerce admin order note in customers order history

Tags: , , , ,



I am looking to display the last Order Note, currently only viewable via Admin in Woocommerce, on the customer side in their Order History.

So they can view the tracking number we add in after the order is set as complete.

Tracking

Customer Order History

https://example.com/my-account/view-order/135/

We add a customer note by first setting the order as COMPLETE via the Woocommerce API then adding an order note with the tracking link. So the tracking ref will always be the last item.

How can I show the last Order Note on the customer order history? No plugins seem to exist for Order Notes to be shown on the customer side.

Ideal outcome:

Ideal

Answer

The following will display last admin order note to my account view orders pages:

add_filter( 'woocommerce_get_order_item_totals', 'account_view_order_last_order_note', 10, 3 );
function account_view_order_last_order_note( $total_rows, $order, $tax_display ){
    // For "completed" orders on my account view order pages
    if( $order->has_status('completed')  && is_wc_endpoint_url( 'view-order' ) ){

        // Get last order note
        $latest_notes = wc_get_order_notes( array(
            'order_id' => $order->get_id(),
            'limit'    => 1,
            'orderby'  => 'date_created_gmt',
        ) );

        $latest_note = current( $latest_notes );

        if ( isset( $latest_note->content ) ) {
            // Add a new row for tracking
            $total_rows['order_tracking'] = array(
                'label' => __('Tracking:','woocommerce'),
                'value' => $latest_note->content
            );
        }
    }

    return $total_rows;
}

Code goes in function.php file of your active child theme (or active theme). Tested and works.



Source: stackoverflow