web-dev-qa-db-ja.com

Woocommerce Subscriptionsを使用して購読キーまたはIDを取得する方法

カスタム関数に渡すには、特定の購読の購読キーを取得する必要があります。キーを取得する方法を示すドキュメントを参照しましたが、これをコードに統合できませんでした。それで私のコードがすることは、更新が引き起こされたとき、私は私の関数でprocessed_subscription_paymentにフックします。そのため、このコードはサブスクリプションの更新料が支払われたときにのみ実行されます。コードは以下の通りです。

ドキュメントはこちらです: https://docs.woothemes.com/document/subscriptions/developer/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にとても慣れていないので、無知を恐れてください。

1
nerdalert

私は答えを考え出したので、私はそれを投稿しようと思った。私のコードは今このようになっていて動作します。

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

function updatedays($user_id, $subscription_key)
{  
    //do what I need to the sub key
}

しかし、Woothemesのドキュメントにはもっと多くの例が必要です。

2
nerdalert

注文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;
1
Diaz Adhyatma