Shlomi
estoy tratando de conseguir el subscription id
del gancho de acción woocommerce_order_status_changed
.
me da la order id
que se cambia cada cambio que hace el cliente.
Por ejemplo: Si el subscription id
es 10
el original order id
es 9
.
Ahora, cada cambio que hizo el cliente genera una nueva identificación de pedido, que le brinda la acción anterior. En este punto tengo la $customer_id
, $order_id
y el original post id
cual es 9
,
como puedo conseguir el subscription id
del orden actual?
Gracias
LoicTheAztec
Puede utilizar la función dedicada wcs_get_subscriptions_for_order()
que recuperará $ ID de suscripción.
Así que este podría ser tu código:
add_action('woocommerce_order_status_changed', 'action_order_status_changed');
function action_order_status_changed( $order_id ){
$subscriptions_ids = wcs_get_subscriptions_for_order( $order_id, array( 'order_type' => 'any' ) );
// We get all related subscriptions for this order
foreach( $subscriptions_ids as $subscription_id => $subscription_obj )
if($subscription_obj->order->id == $order_id) break; // Stop the loop
// The subscription ID: $subscription_id
// The An instance of the Subscription object: $subscription_obj
// ...
}
-
Una nota para cualquiera que lea esto: tuve que configurar los parámetros para la función como
wcs_get_subscriptions_for_order( $order_id, array( 'order_type' => 'any' ) )
para que esto funcione. Sin el segundo parámetro no me funcionaba (ver funciónadd_subscriptions_to_view_order_templates()
en el archivo class-wc-subscriptions-order.php en el complemento woocommerce-subscriptions que hace lo mismo). Estoy usando WC 3.3.5 y WordPress 4.9.4– Sara
3 de mayo de 2018 a las 9:59
-
@Sarah Gracias por tu nota…
– LoicTheAztec
3 de mayo de 2018 a las 11:03
-
@Sarah gracias por tu nota, realmente ayuda mucho. muchas gracias 🙂
– dev_ramiz_1707
4 de marzo de 2021 a las 15:12