Как получить идентификатор подписки, связанный с текущим заказом?

Я использую подписки woocommerce и пишу плагин для обновления внешней системы, если пользователь обновляет или понижает свою подписку, он показывает как новый заказ со своим идентификатором, но я не могу получить идентификатор подписки (который является постоянным). ), связанный с идентификатором заказа, я проверяю документацию, но не могу найти решение.

0

Решение

Вы можете получить доступ к этим данным, подключившись к processed_subscription_payment действие, предоставляемое подписками WooCommerce:

add_action( 'processed_subscription_payment', 'se43079522_process_subscription', 10, 2 );

function se43079522_process_subscription($user_id, $subscription_key) {
// here you have access to the $subscription_key (ID) and the $user_id associated
}

Посмотрите на эту ссылку: https://docs.woocommerce.com/document/subscriptions/develop/action-reference/ для получения дополнительной информации о доступных действиях с этим плагином.

ИЛИ, вы можете сделать это вручную так:

Прочитать комментарии для прохождения

global $woocommerce;

// Get the order ID and save as variable
$order_id = [ORDER_ID];

// Get the order object
$order = new WC_Order( $order_id );

// Loop through the subscription order
foreach ( WC_Subscriptions_Order::get_recurring_items( $order ) as $order_item ) {

// Get the subscription key
$subscription_key = WC_Subscriptions_Manager::get_subscription_key( $order->id, WC_Subscriptions_Order::get_items_product_id( $order_item ) );

}

// This is your subscription key (ID)
echo $subscription_key;
0

Другие решения

Получить идентификатор подписки из заказа. Вы можете использовать функцию woocommerce wcs_get_subscription_for_order, чтобы получить объект с подпиской, связанной с этим заказом, и получить идентификатор подписки оттуда.

$ subscription = wcs_get_subscription_for_order ($ order_id);

var_dump ($ подписок);

0

По вопросам рекламы [email protected]