Skip to content
Advertisement

how i can retrieve all woocommerce orders in new custom plugin

i’m creating a new custom plugin and need to retrieve all woocommerce orders

i tried to use : wc_get_orders() function to retrieve all woocommerce orders but i got

Uncaught Error: Call to undefined function wc_get_orders()

and did this :

require_once '../woocommerce/includes/wc-order-functions.php'; 

but i got :

require_once(../woocommerce/includes/wc-order-functions.php): failed to open stream: 

how i can retrieve all woocommerce orders

Advertisement

Answer

WooCommerce already provided API to get all orders https://example.com/wp-json/wc/v3/orders

For more details please see the documentation


If you want function based instead of REST API then, please do like this:

You should call your order function into the action hook woocommerce_after_register_post_type to work properly. So please enclose your function call like this:

add_action(
    'woocommerce_after_register_post_type', 
    function() {
        $orders = wc_get_orders( array( 'numberposts' => -1 ) );
        var_dump( $orders );
    }
);

Then you can loop through the object and fetch all the necessary details for e.g.

foreach ( $orders->get_items() as $item_id => $item ) {
   $product_id = $item->get_product_id();
   $variation_id = $item->get_variation_id();
   $product = $item->get_product();
   $name = $item->get_name();
   $quantity = $item->get_quantity();
   $subtotal = $item->get_subtotal();
   $total = $item->get_total();
   $tax = $item->get_subtotal_tax();
   $taxclass = $item->get_tax_class();
   $taxstat = $item->get_tax_status();
   $allmeta = $item->get_meta_data();
   $somemeta = $item->get_meta( '_whatever', true );
   $type = $item->get_type();
}

For more details please check this article.

User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement