Kod Bersyarat untuk Penyiapan Auto Pesanan Berbayar dalam WooCommerce
WooCommerce secara amnya melengkapkan pesanan secara automatik untuk produk maya, tetapi ini mungkin tidak berlaku disebabkan kaedah pembayaran batasan. Begini cara untuk melaksanakan kod bersyarat untuk mengendalikan isu ini:
Mengenal pasti Cangkuk Penapis:
Cangkuk penapis untuk mengubah suai status pesanan berbayar yang dibenarkan ialah status_pesanan_woocommerce_complete_complete_. Cangkuk ini digunakan oleh semua kaedah pembayaran yang memerlukan pembayaran semasa pembayaran.
Penyelesaian untuk WooCommerce 3 dan Ke Atas (2019):
add_filter( 'woocommerce_payment_complete_order_status', 'wc_auto_complete_paid_order', 10, 3 ); function wc_auto_complete_paid_order( $status, $order_id, $order ) { return 'completed'; }
Diperbaiki Versi untuk WooCommerce 3 dan Ke Atas (2018):
add_action( 'woocommerce_thankyou', 'wc_auto_complete_paid_order', 20, 1 ); function wc_auto_complete_paid_order( $order_id ) { $order = wc_get_order( $order_id ); if ( in_array( $order->get_payment_method(), array( 'bacs', 'cod', 'cheque' ) ) ) { return; } $order->update_status( 'completed' ); }
Jawapan Asal untuk Semua WooCommerce Versi:
add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_paid_order', 10, 1 ); function custom_woocommerce_auto_complete_paid_order( $order_id ) { $order = wc_get_order( $order_id ); if ( ( 'bacs' == get_post_meta($order_id, '_payment_method', true) ) || ( 'cod' == get_post_meta($order_id, '_payment_method', true) ) || ( 'cheque' == get_post_meta($order_id, '_payment_method', true) ) ) { return; } elseif( $order->get_status() === 'processing' ) { $order->update_status( 'completed' ); } }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melengkapkan Pesanan WooCommerce Berbayar Secara Automatik dengan Logik Bersyarat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!