如何使用WooCommerce订阅获取订阅密钥或ID

时间:2016-03-31 作者:nerdalert

我需要获取特定订阅的订阅密钥才能传递到自定义函数中。我引用了文档,其中显示了如何获取密钥,但我未能将其集成到代码中。因此,我的代码所做的是,当触发续订时,我会使用我的函数挂接到已处理的\\u subscription\\u付款。因此,此代码仅在支付订阅续订时运行。代码如下。

文档位于此处:https://docs.woothemes.com/document/subscriptions/develop/functions/management-functions/

此处的代码(位于functions.php中):

add_action( \'processed_subscription_payment\', \'callupdater\' );

function callupdater()
{
    //need to get the subscription key here to pass to updatedays()
    $key = .....
    updatedays(key);
}

function updatedays($subscription_key)
{
    //do some tasks with the key
}
非常感谢您的帮助。我对PHP很陌生,请原谅我的无知。

2 个回复
最合适的回答,由SO网友:nerdalert 整理而成

我找到了答案,所以我想我应该把它贴出来。我的代码现在看起来是这样的,并且可以正常工作:

add_action( \'processed_subscription_payment\', \'updatedays\', 10, 2 );

function updatedays($user_id, $subscription_key)
{  
    //do what I need to the sub key
}
不过,在Woothemes文档中确实需要更多的例子。。

SO网友:Diaz Adhyatma

只要您可以获得订单Id,就可以使用此代码。

global $woocommerce;
$order_id=12345;//PUT YOUR ORDER ID HERE
$order = new WC_Order( $order_id );
foreach ( WC_Subscriptions_Order::get_recurring_items( $order ) as $order_item ) {
    $subscription_key = WC_Subscriptions_Manager::get_subscription_key( $order->id, WC_Subscriptions_Order::get_items_product_id( $order_item ) );
}
echo $subscription_key;