WooCommerce new order action – get order information

I am using this to create a new function in my functions.php file

add_action( 'woocommerce_new_order', 'create_invoice_for_wc_order',  1, 1  );
function create_invoice_for_wc_order() {

}

it is to execute some custom code when a new order is placed, how can i get the order information (ordered products etc) inside my function

Related posts

Leave a Reply

4 comments

  1. All answers here are correct but if you need the line items the above wont work since line items can’t be fetched with new WC_Order at that time.

    The hook now has a second $order parameter that will work.

    add_action( 'woocommerce_new_order', 'create_invoice_for_wc_order',  1, 2  );
    function create_invoice_for_wc_order( $order_id, $order ) {
        $items = $order->get_items();
        // etc...
    }
    
  2. woocommerce_new_order includes an $order_id parameter. You can use it in your callback:

    add_action( 'woocommerce_new_order', 'create_invoice_for_wc_order',  1, 1  );
    function create_invoice_for_wc_order( $order_id ) {
        $order = new WC_Order( $order_id );
        $items = $order->get_items();
        // etc...
    }
    
  3. If you want to get only the order details, You can use ‘woocommerce_new_order’ hook and $order_id as parameter

    add_action( 'woocommerce_new_order', 'create_invoice_for_wc_order',  1, 1  );
    function create_invoice_for_wc_order($order_id) {
    $order = new WC_Order( $order_id );
    print_r($order);
    //your code
    }
    

    But if You want to get order items You should use ‘woocommerce_checkout_order_processed’

    add_action( 'woocommerce_checkout_order_processed', 'create_invoice_for_wc_order',  1, 1  );
    function create_invoice_for_wc_order($order_id) {
    $order = new WC_Order( $order_id );
    //order items
    $items = $order->get_items();
    print_r($items);
    }