2016-03-21 24 views
2

私はこれが完全な初心者の質問になるかもしれないが、この時点で私はとても不満であり、私は気にしないことも分かっている。私は現在のユーザーのサブスクリプションの開始日で変数を作成しようとしています - もしそれらが1つあれば、開始日に引っ張ってきます。Woocommerce Subscriptionを開始する開始日

これは私が今までに持っていたものです。最後に短コードではありません(関数に入れた変数になります)。私は短コードとして設定しました。 output - それは、ユーザが格納した情報の配列全体を返します。私はちょうど開始日の後だ:)

function subscriber_start_date(){ 
    $start_date = WC_Subscriptions_Manager::get_users_subscription($user_id, 'start_date'); 
    print_r($start_date); 
} 

add_shortcode("subscriber-start-date","subscriber_start_date"); 

私は書類herehereを見てきましたが、まだこれだけでは何もアップ描いていないと私は変数を追加するような単純な愚かなものになるだろう知っていますどこか、コンマか[''] - 私には意味をなさないものの組み合わせが数多く試されていますが、何も動作していません(これは何も返されていない唯一の組み合わせです)。

ご迷惑をおかけして申し訳ございません。前もって感謝します。

答えて

1

それはいくつかのことに言及する価値がある:

まず、これはアドオン(サブスクリプション)だ、コアWooCommerceではありません。機能がないことを意味し

...各サブスクリプションは、以下の値を持つ配列として返されます...

第二に、あなたがするリンクドキュメントは、具体的言います、開始日を返します。

第2フィールドは、サブスクリプション識別子です。ユーザーは複数のサブスクリプションを持つことができます。この機能を使用すると、サブスクリプションの特定のフィールドではなく、特定のサブスクリプションを取得できます。だから、

、あなたがやりたいために、あなたは次のようにあなたのコードに追加する必要があります。あなたは、サブスクリプションIDがわからない場合

function subscriber_start_date() { 
    // NOTE: You don't have the $user_id - are you setting it? 

    // Somehow you need to identify the subscription you want. 
    $subscription_id = 'MY_SUBSCRIPTION_ID'; 
    $subscription = WC_Subscriptions_Manager::get_users_subscription($user_id, $subscription_id); 

    $start_date = (isset($subscription['start_date'])) ? $subscription['start_date'] : FALSE; 

    var_dump($start_date); 
} 

add_shortcode("subscriber-start-date","subscriber_start_date"); 

、あなたが取得するには、このような何かを行うことができますユーザーの「最初の」定期購入:

function subscriber_start_date() { 
    // Set start date to initial value 
    $start_date = FALSE; 
    // Get ALL subscriptions 
    $subscriptions = WC_Subscriptions_Manager::get_users_subscriptions($user_id); 
    if ($subscriptions) { 
     // Get the first subscription 
     $subscription = array_shift($subscriptions); 
     // Get the start date, if set 
     $start_date = (isset($subscription['start_date'])) ? $subscription['start_date'] : FALSE; 
    } 

    return $start_date; 
} 
+0

非常に参考になった、丁寧でタイムリーな、徹底的な回答をいただきありがとうございます。私はそれが働く方法を夢中に見ていたときに、どのように戻ってきたのか迷っていたと思います。 ユーザーIDは設定されていませんでした。デフォルトでは、値が残っていれば、私は現在のユーザーのためにいっぱいですか?私が書こうとしている関数については、彼らはサブスクリプションを持っているかどうかを調べるだけです(そして、それらは一度に1つのサブスクリプションを持つことができます)。 –