2017-07-19 3 views
2

Ich möchte wissen, ob es einen Aktionshaken gibt, der prüfen kann, ob das Abonnement in Woocommerce erfolgreich erneuert wurde? Übrigens benutze ich das Woocommerce Subscription Plugin. Ich habe eine Funktionalität erstellt, die das Datum der Abonnementbestellung aufzeichnet und sie einer CSV-Datei hinzufügt. Die Funktion funktioniert perfekt für den ersten Kauf. Ich meine, wenn der Benutzer ein Abonnement kauft, wird es erfolgreich in der CSV-Datei aufgezeichnet, weil ich feuere die Funktion auf woocommerce_thankyou Aktion hook, das einzige Problem, das ich gegenüberstelle, ist, dass ich nicht scheinen kann, einen Haken zu finden, der diese Funktion bei erfolgreicher Erneuerung des Abonnements ausführen kann. Ich habe versucht, woocommerce_subscription_renewal_payment_complete Aktion Haken zu verwenden, aber es hat nicht funktioniert, unten ist die Funktion, die ich erstellt habe.Woocommerce Aktions-Hook zur Ausführung der Funktion bei Abonnementerneuerung

/** 
* Add subscriptions to csv. 
*/ 

add_action('woocommerce_subscription_renewal_payment_complete', 'add_subs_to_csv'); 
add_action('woocommerce_thankyou', 'add_subs_to_csv'); 
function add_subs_to_csv($order_id) { 
    $order = wc_get_order($order_id); 
    $items = $order->get_items(); 
    foreach ($items as $key => $value) { 
     $meta_values = $value->get_data(); 
     foreach ($meta_values as $meta_key => $meta_value) { 
      if ($meta_key == 'product_id' && $meta_value == 875) { 
       $paid_date  = explode(" ", get_post_meta($order_id, '_paid_date', true)); 
       $subs_paid_date = date('d F, Y', strtotime($paid_date[0])); 
       wc_add_order_item_meta($key, 'Delivery Date', $subs_paid_date); 
      } 
     } 

    } 
} 

Antwort

0

Könnte der wcs_renewal_order_created Haken das sein, wonach Sie suchen? Die docs sagen:

WooCommerce Abonnements speichern alle Details jeder Abonnement Erneuerung in einer Standard-WooCommerce Ordnung, nur mit einer speziellen Meta-Flagge es zu einem Abonnement verknüpft.

Diese Aufträge werden immer durch die wcs_create_renewal_order() erstellt Funktion, und zwar unabhängig davon, ob sie für eine geplante Erneuerung Ereignis erstellt werden, manuell über die WooCommerce> Abonnement bearbeiten Administrationsbildschirm oder über die Abonnements Endpunkte für die WooCommerce REST API. Aus diesem Grund ist es möglich, den Wert von irgendetwas in diesem Erneuerungsauftrag mit diesem Filter hinzuzufügen, zu entfernen oder zu aktualisieren.

Zum Beispiel kann dies verwendet werden, um einen Rabatt auf spezifische Erneuerung Aufträge, wie die 12. Reihenfolge jedes Jahr hinzuzufügen. Es könnte auch verwendet werden, um einmalige Gebühr für einen bestimmten Verlängerungsauftrag hinzuzufügen, wie eine spezielle jährliche zusätzliche Gebühr auf einem monatlichen Abonnement.

So die oben Haken nach Zahlung auslösen sollte, dann würden Sie wahrscheinlich brauchen nur zu prüfen, ob es Status abgeschlossen wurde, die Sie auch in Ihrem aktuellen Haken tun könnte:

/** 
* After WooCommerce Subscriptions Creates Renewal Order 
* 
* @param WC_Order Object $order 
* @param Integer|WC_Subscription Object $subscription 
* 
* @return void 
*/ 
function add_subs_to_csv($order, $subscription) { 

    if('completed' === $order->get_status()) { 
     $items = $order->get_items(); 
     foreach ($items as $key => $value) { 
      $meta_values = $value->get_data(); 
      foreach ($meta_values as $meta_key => $meta_value) { 
       if ($meta_key == 'product_id' && $meta_value == 875) { 
        $paid_date  = explode(" ", get_post_meta($order_id, '_paid_date', true)); 
        $subs_paid_date = date('d F, Y', strtotime($paid_date[0])); 
        wc_add_order_item_meta($key, 'Delivery Date', $subs_paid_date); 
       } 
      } 

     } 
    } 

} 
add_action('wcs_renewal_order_created', 'add_subs_to_csv', 10, 2); 
+0

ich auf der gleichen arbeite Sachen, naja, fast gleich, ich werde deinen Vorschlag umsetzen und sehen, ob es funktioniert ... melde mich wieder. Danke – FaISalBLiNK

Verwandte Themen