それがコードスニペット基づいています。このフィルタはhere is the description of that method
使用今
、woocommerce利用$order->payment_complete()
方法あなたが状況を修正するために、独自の機能をフックする必要がありますので、注文完了を処理するため、このthreadの上に私たちは、'on-hold'
に'processing'
注文状況を変換する、私たちの機能をフックするためにここにwoocommerce_thankyou
(つまりは、支払いが行われた直後に解雇された)を使用します。
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;
}
あなたはまた、ターゲットにすることができ、あなたの条件にたとえば、ここでは3つの支払いゲートウェイを迂回し、特定の支払いゲートウェイをターゲットにします。"your_payment_gateway"
スラッグ
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;
}
このコードスニペットは、アクティブな子テーマまたはテーマのfunction.phpファイルになります。
あなたが簡単にあなたが欲しいものを行うことができます、と有料受注のための正しいフックがwoocommerce_thankyou
参考資料です:
あなたは '$ order-> payment_complete()'が自分の支払いプラグインの注文ステータスを '処理中 'に変更しています。代わりに私自身の関数を配置して、あなたに知らせるようにします。 – krishna89
'$ order-> payment_complete()'の代わりに次のコードを追加しました。 '$ order-> update_status( '保留')です。 add_post_meta($ order-> id、 '_paid_date'、current_time( 'mysql')、true); update_post_meta($ order-> id、 '_transaction_id'、$ txnid); $ order-> reduce_order_stock(); ' – krishna89