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