Get Product id from order id in Woocommerce

  • I am having trouble with Woocommerce product details and order details relationship. I'm not able to find the product ID of a related order ID on the View Orders page of the Woocommerce theme. I simply want to get the product content and permalink etc on View Orders page.

    I tried searching in wp_postmeta but had no luck.

  • Ewout

    Ewout Correct answer

    8 years ago

    WooCommerce 3.0+

    you can get the order items of an order by

    $order = wc_get_order( $order_id );
    $items = $order->get_items();
    

    then if you loop through the items, you can get all the relevant data:

    foreach ( $items as $item ) {
        $product_name = $item->get_name();
        $product_id = $item->get_product_id();
        $product_variation_id = $item->get_variation_id();
    }
    

    a good tip is to check how the admin order pages get the data, you'll find many answers there!

    Pre-WooCommerce 3.0

    $order = new WC_Order( $order_id );
    $items = $order->get_items();
    foreach ( $items as $item ) {
        $product_name = $item['name'];
        $product_id = $item['product_id'];
        $product_variation_id = $item['variation_id'];
    }
    

    Unless I'm missing something, this doesn't appear to work in the latest version of WooCommerce...

    Still works in WooCommerce 2.4.8 for me, but you need to have the $order_id variable defined (sometimes it's in $order->id, depending on your context).

    @mevius i added an edit for 3+ with a dispatch function for checking multiple products

    see edit history for dispatcher, this is not good without it as it will eat up your server pointlessly

    @GaretClaborn that depends entirely on what you're doing with this data. 'as is', this example snippet is not wasteful of memory in any way.

    If you are checking multiple products then you're repeating quite a bit of logic vs being able to capitalize on the first run of the loop

License under CC-BY-SA with attribution


Content dated before 6/26/2020 9:53 AM