Woocommerce-Aktionshaken zum Ausführen der Funktion bei der Abonnementverlängerung

Lesezeit: 4 Minuten

Ich möchte wissen, ob es einen Aktionshaken gibt, der überprüfen kann, ob das Abonnement in Woocommerce erfolgreich verlängert wurde? Übrigens verwende ich das Woocommerce-Abonnement-Plugin. Ich habe eine Funktion erstellt, die das Datum der Abonnementbestellung aufzeichnet und zu 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 aufgezeichnet, weil ich feuere die Funktion am Aktionshaken woocommerce_thankyou. Das einzige Problem, mit dem ich konfrontiert bin, ist, dass ich anscheinend keinen Haken finden kann, der diese Funktion bei erfolgreicher Abonnementverlängerung ausführen kann. Ich habe versucht, den Aktionshaken woocommerce_subscription_renewal_payment_complete zu verwenden, aber es hat nicht funktioniert. Unten ist die Funktion, die ich erstellt habe.

/**
 * 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 );
            }
        }

    }
}

Könnte die wcs_renewal_order_created Haken sein, was Sie suchen? Die Dokumente sagen:

WooCommerce Subscriptions speichert alle Details jeder Abonnementverlängerung in einer Standard-WooCommerce-Bestellung, nur mit einem speziellen Meta-Flag, das sie mit einem Abonnement verknüpft.

Diese Aufträge werden immer über die erstellt wcs_create_renewal_order()
Funktion, unabhängig davon, ob sie für ein geplantes Verlängerungsereignis, manuell über den Verwaltungsbildschirm WooCommerce > Abonnement bearbeiten oder über die Abonnements-Endpunkte für die WooCommerce-REST-API erstellt wurden. Aus diesem Grund ist es mit diesem Filter möglich, den Wert von allem in dieser Verlängerungsbestellung hinzuzufügen, zu entfernen oder zu aktualisieren.

Dies kann beispielsweise verwendet werden, um bestimmten Verlängerungsbestellungen, wie der 12. Bestellung jedes Jahr, einen Rabatt hinzuzufügen. Es könnte auch verwendet werden, um eine einmalige Gebühr für eine bestimmte Verlängerungsbestellung hinzuzufügen, z. B. eine spezielle jährliche Zusatzgebühr für ein monatliches Abonnement.

Der obige Hook sollte also nach der Zahlung ausgelöst werden, Sie müssten wahrscheinlich nur überprüfen, ob der Status abgeschlossen war, was Sie auch in Ihren aktuellen Hooks tun könnten:

/**
 * 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 );

  • Ich arbeite an dem gleichen Zeug, na ja fast dem gleichen, ich werde deinen Vorschlag umsetzen und sehen, ob es funktioniert … werde berichten.. Danke

    – FaISalBLiNK

    21. Juli 2017 um 11:28 Uhr

  • return $order am Ende der Funktion benötigt wird

    – madhushankarox

    22. April 2018 um 16:16 Uhr

  • Wissen wir, ob dieser Haken tatsächlich nach der Zahlung feuert? Die Art und Weise, wie es sich liest, ist für mich vage und in meinem Fall eine sehr wichtige Überlegung.

    – Armadadrive

    30. Juni 2021 um 16:11 Uhr

  • @armadadrive Am einfachsten ist es zu testen. Testen Sie immer den Code, den Sie woanders erhalten. Sie können mehr über den Haken in der lesen Dokumente zum WooCommerce-Abonnement.

    – Hallo_McGee

    30. Juni 2021 um 16:15 Uhr

  • @Howdy_McGee Ich stimme voll und ganz zu, hatte nur keine klare Antwort von den Entwicklerdokumenten erhalten und mich gefragt, ob jemand konkrete Kenntnisse hatte, bevor ich anfing, meine eigenen Lösungen zu testen. Vielen Dank.

    – Armadadrive

    30. Juni 2021 um 16:46 Uhr

Ich hatte ein Problem bei der Abonnementverlängerung und ich habe es mit dem folgenden Code behoben:

/*
 * FIXED : Membership got PAUSED everytime at automatic subscription renewal
 */

function change_membership_status_active( $subscription , $order ) {
    global $wpdb;
    if( 'completed' === $order->get_status() ) {        
        $membership = $wpdb->get_row( "SELECT * FROM wp_postmeta WHERE meta_key = '_subscription_id' AND meta_value =  $subscription->ID" );
        $mem_id = $membership->post_id;
        $status="wcm-active";
        $update_args = array( 'ID' => $mem_id, 'post_status' => $status );
        wp_update_post($update_args);
    }
}
add_action( 'woocommerce_subscription_renewal_payment_complete', 'change_membership_status_active', 10, 2 );

1353450cookie-checkWoocommerce-Aktionshaken zum Ausführen der Funktion bei der Abonnementverlängerung

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy