Skip to content
Advertisement

How to get Order Details from a WC_Subscription instance Object

This one for completed initial subscription payments and subscription renewals.

function payment_made($subscription){
    // How do I get the order details?
}
add_action("woocommerce_subscription_payment_complete", "payment_made");

And this one for when a status is changed, so I can handle manual and system changes either manual overrides or failed/pending/active/whatever status based of payments or switches.

function status_update($subscription, $old_status, $new_status){
    // How do I get the order details?
}
add_action("woocommerce_subscription_status_updated", "status_updated");

Advertisement

Answer

To get the Order details from the WC_Subscription Object, you will need first to get the parent ID (which is the order ID) using get_parent_id() method:

$order_id = $subscription->get_parent_id();

Then you will get the WC_Order Object from the order Id using:

$order = wc_get_order( $order_id );

Then to get order details: How to get WooCommerce order details

Related:

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