2016-03-21 14 views
2

Ich realisiere, dass dies eine vollständige Neuling Frage sein kann, aber an diesem Punkt bin ich so frustriert, dass ich nicht einmal kümmern. Ich versuche, eine Variable mit dem Startdatum des aktuellen Benutzer-Abonnements zu erstellen - wenn sie einen haben - und ich bleibe beim Einziehen des Startdatums.Holen Sie Woocommerce Subscription Startdatum

Dies ist, was ich bis jetzt habe - es wird am Ende kein Shortcode sein (es wird eine Variable sein, die ich in eine Funktion setze) Ich habe es gerade als Shortcode eingerichtet, damit ich das sehen kann Ausgabe - und es gibt das gesamte Array der gespeicherten Informationen des Benutzers zurück. Ich bin gerade nach dem Startdatum :)

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"); 

Ich habe in den Unterlagen sehe here und here bin aber nach wie vor nur nichts auf dieser Zeichnung, und ich weiß, dass es etwas dumm einfach sein wird eine Variable wie das Hinzufügen Irgendwo, ein Komma oder [''] - Ich habe eine Unzahl von Kombinationen von Dingen ausprobiert, die für mich Sinn ergeben, aber nichts funktioniert (das ist die einzige Kombination, die etwas Nützliches zurückgegeben hat).

Alle hilfreiche Kommentare würden sehr geschätzt werden. Danke im Voraus.

Antwort

1

Es lohnt sich, ein paar Dinge zu erwähnen:

Erstens ist dies nicht Kern WooCommerce, es ist ein Add-on (Abonnements).

Zweitens ist die Dokumentation, die Sie verknüpft sagt ausdrücklich:

... jedes Abonnement als ein Array mit den folgenden Werten zurückgegeben ...

Das bedeutet, die Funktion nicht ist werde nur das Startdatum zurückgeben.

Anders gesagt, das zweite Feld ist eine Subskriptions-ID. Ein Benutzer kann mehr als ein Abonnement haben. Mit dieser Funktion können Sie ein spezifisches Abonnement, kein bestimmtes Feld aus dem Abonnement abrufen.

, um so zu tun, was Sie wollen, müssen Sie Ihren Code wie folgt hinzuzufügen:

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"); 

Wenn Sie das Abonnement-ID nicht kennen, dann könnte man so etwas tun das bekommen "erstes" Abonnement für den Benutzer:

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

Vielen Dank für die sehr hilfreiche, respektvolle, rechtzeitige und gründliche Antwort! Ich glaube, ich habe es vermisst, wie es zurückgegeben wurde, als ich verzweifelt nach einem Weg suchte, um es zum Laufen zu bringen - das sagte, dass ich wahrscheinlich immer noch nicht das richtige Ende der Codierung erreicht hätte. Ich hatte nicht die Benutzer-ID festgelegt, standardmäßig, wenn keine Wert für den aktuellen Benutzer gefüllt bleibt, glaube ich? Für die Funktion, die ich schreiben möchte, schaue ich nur, ob sie ein Abonnement haben (und sie dürfen nur 1 Abonnement gleichzeitig haben). –