2

The intention is represented on the attached Image. Essentially to display on WooCommerce admin backend order page list. If the order comes from a new Customer (if it is his first order) so that admins can know it's a persons first order on the store.

I have figured out that I should be able to check if it is a first order with the following snippet.

function new_customer_warning( $document_type, $order )
{
    if( !empty($order) && $document_type == 'invoice' ) {
        if( $order->get_user_id() != 0 ) {
            $customer_orders = wc_get_customer_order_count( $order->get_user_id() );

            if( $customer_orders == 1 ) {
                echo '<tr><th><strong>New customer!</strong></th><td></td></tr>';
            }
        }
    }
}

However I can't figure out a hook for the admin Orders page, for how to display the intended New Order warning there.

As an alternative (or ideally having it in both places) The "New Customer" message could be echoed directly inside of the Order Details page.

This image shows an example of this concept on both locations:

New Customer warning in Orders Page

7uc1f3r
  • 28,449
  • 17
  • 32
  • 50
Jaime Matos
  • 343
  • 1
  • 14

1 Answers1

3

You could use the manage_shop_order_posts_custom_column and woocommerce_admin_order_data_after_order_details action hook

// Admin order list
function action_manage_shop_order_posts_custom_column( $column, $post_id ) {    
    // Compare
    if ( $column == 'order_number' ) {
        // Get order
        $order = wc_get_order( $post_id );
        
        // Getting the user ID
        $user_id = $order->get_user_id();

        // User ID exists
        if ( $user_id >= 1 ) {
            // Get the user order count
            $order_count = wc_get_customer_order_count( $user_id );
            
            // First order
            if ( $order_count == 1 ) {
                echo '&nbsp;<span>&ndash; ' .  __( 'New customer!', 'woocommerce' ) . '</span>';                
            }
        }
    }
}
add_action( 'manage_shop_order_posts_custom_column', 'action_manage_shop_order_posts_custom_column', 20, 2 );

// Order details page
function action_woocommerce_admin_order_data_after_order_details( $order ) {
    // Getting the user ID
    $user_id = $order->get_user_id();

    // User ID exists
    if ( $user_id >= 1 ) {
        // Get the user order count
        $order_count = wc_get_customer_order_count( $user_id );
        
        // First order
        if ( $order_count == 1 ) {
            echo '<h3>' .  __( 'New customer!', 'woocommerce' ) . '</h3>';              
        }
    }
}
add_action( 'woocommerce_admin_order_data_after_order_details', 'action_woocommerce_admin_order_data_after_order_details', 10, 1 );
7uc1f3r
  • 28,449
  • 17
  • 32
  • 50