Hier ist es ein Code-Schnipsel basiert auf diesem thread. Wir verwenden hier woocommerce_thankyou
(das ausgelöst wird, nur nach Zahlung erfolgt ist) unsere Funktion einzuhaken, Umwandlung 'processing'
Bestellungen Status 'on-hold'
:
add_action('woocommerce_thankyou', 'custom_woocommerce_paid_order_status', 10, 1);
function custom_woocommerce_paid_order_status($order_id) {
if (! $order_id) {
return;
}
global $woocommerce;
$order = new WC_Order($order_id);
// 'processing' orders status are converted to 'on-hold'.
if (is_object($order) && $order->has_status('processing') {
$order->update_status('on-hold');
}
return;
}
Sie können auch in Ihren Bedingungen zielen die Zahlungs-Gateways zum Beispiel umgehen wir hier drei Zahlungs-Gateways und zielen auf ein spezifisches Zahlungs-Gateway unter Verwendung von "your_payment_gateway"
Slug:
add_action('woocommerce_thankyou', 'custom_woocommerce_paid_order_status', 10, 1);
function custom_woocommerce_paid_order_status($order_id) {
if (! $order_id) {
return;
}
global $woocommerce;
$order = new WC_Order($order_id);
// Bypass orders with Bank wire, Cash on delivery and Cheque payment methods.
if ((get_post_meta($order->id, '_payment_method', true) == 'bacs') || (get_post_meta($order->id, '_payment_method', true) == 'cod') || (get_post_meta($order->id, '_payment_method', true) == 'cheque')) {
return;
}
// Target your "your_payment_gateway_slug" with this conditional
if (is_object($order) && get_post_meta($order->id, '_payment_method', true) == 'your_payment_gateway_slug' && $order->has_status('processing')) {
$order->update_status('on-hold');
}
return;
}
Dieser Code-Schnipsel geht auf function.php-Datei Ihres aktiven untergeordneten Themas oder Themas.
Sie können ganz einfach alles, was Sie wollen, und die richtigen Haken Aufträge bezahlt sind woocommerce_thankyou
Referenzen:
Sie haben Recht '$ order-> payment_complete() 'ändert den Bestellstatus in meinem Zahlungs-Plugin in' Verarbeitung '. Ich werde versuchen, stattdessen meine eigene Funktion zu platzieren und Sie wissen zu lassen. – krishna89
Anstatt '$ order-> payment_complete()' habe ich den folgenden Code hinzugefügt und es hat wie erwartet funktioniert. '$ order-> update_status ('on-hold'); add_post_meta ($ order-> id, '_paid_date', aktuelle_Zeit ('mysql'), true); update_post_meta ($ order-> id, '_transaction_id', $ txnid); $ order-> reduce_order_stock(); ' – krishna89