Woocommerce, welcher Hook für Änderungen des Bestellstatus verwendet werden soll

Lesezeit: 2 Minuten

Benutzeravatar von Luigino
Luigino

In meinem benutzerdefinierten Plugin muss ich jedes Mal abfangen, wenn sich ein Bestellstatus ändert wc_on_hold zu wc_completed Also habe ich versucht aufzuschreiben:

function so_status_completed( $order_id, $old_status, $new_status ) {       
    
    // if user is active , then get order amount and do all other personal calculations
    
    global $wpdb;
    $order = wc_get_order( $order_id );
    //$payment_method = $order->get_payment_method(); //returns payment method bacs,cheque,cod etc
    $user_id = $order->get_user_id();
    $total = $order->get_total();
    $order_data = $order->get_data(); 
    //$order_total = $order->get_formatted_order_total();
    $order_total = $order->get_total();
    
    echo '<script>console.log("Debug Objects: Check order_total ' . $order_total. '");</script>';

}
add_action('woocommerce_order_payment_status_changed','so_status_completed',10,1);

Aber als ich versuchte, einen Bestelltest von ausgesetzt auf abgeschlossen zu ändern, konnte ich in der Chrome-Konsole dieses Echo nicht abrufen, das mir den Bestellpreis anzeigte. Vielleicht ist die Verwendung von add_action nicht der richtige Weg, um einen Listener für dieses Ereignis zu platzieren ?

Außerdem verwende ich, da ich gerade hier bin, $order-get_total(), das ich im Internet nach seiner Funktionalität durchsucht habe, aber keine tiefen Dokumente gefunden habe, also möchte ich Sie fragen, ob diese Methode die richtige ist, um den Bestellbetrag ohne Gebühr abzurufen angewandt?

Vielen Dank! Prost!!!

„Ich muss jedes Mal abfangen, wenn sich ein Bestellstatus ändert wc_on_hold zu wc_completed

Sie müssten Ihren Haken zu ändern woocommerce_order_status_changed.

“Ich konnte dieses Echo nicht auf die Chrome-Konsole übertragen, das mir den Bestellpreis anzeigt.”

Sie können nicht verwenden javascript und console.log in diesem Haken. Sie müssten entweder die verwenden die Funktion oder die error_log Funktion, um es bei Ihrem anzumelden debug.log Datei.


Verwenden die Funktion

add_action('woocommerce_order_status_changed', 'so_status_completed', 10, 3);

function so_status_completed($order_id, $old_status, $new_status)
{

    $order = wc_get_order($order_id);

    //$order_total = $order->get_formatted_order_total();
    $order_total = $order->get_total();

    die($order_total);
}

Verwenden error_log Funktion

dd_action('woocommerce_order_status_changed', 'so_status_completed', 10, 3);

function so_status_completed($order_id, $old_status, $new_status)
{

    $order = wc_get_order($order_id);

    //$order_total = $order->get_formatted_order_total();
    $order_total = $order->get_total();

    error_log(print_r('order total: ' . $order_total, true));
}

Zweite Frage

“Da ich gerade hier bin, möchte ich Sie fragen, ob $order-get_total() ist der richtige, um den Bestellbetrag ohne Gebühr abzurufen?”

Vielleicht möchten Sie einen Blick auf die werfen $order->get_subtotal() für die Summen vor Versand, Coupons und Steuern:

Bitte sehen Sie sich diese verwandten Antworten an:

  • https://stackoverflow.com/a/47782647/15040627
  • https://stackoverflow.com/a/61102779/15040627
  • https://stackoverflow.com/a/32634480/15040627
  • https://stackoverflow.com/a/44708344/15040627

1427350cookie-checkWoocommerce, welcher Hook für Änderungen des Bestellstatus verwendet werden soll

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

Privacy policy