Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Mengautomasikan Penyiapan Pesanan Produk Maya Berbayar dalam WooCommerce?

Bagaimana untuk Mengautomasikan Penyiapan Pesanan Produk Maya Berbayar dalam WooCommerce?

Susan Sarandon
Lepaskan: 2024-12-09 18:25:11
asal
550 orang telah melayarinya

How to Automate the Completion of Paid Virtual Product Orders in WooCommerce?

Cara Melengkapkan Pesanan Produk Maya Berbayar dalam WooCommerce

Apabila pesanan produk maya ditandakan sebagai berbayar, ia biasanya akan ditetapkan secara automatik kepada status "selesai". Walau bagaimanapun, WooCommerce tidak selalu melakukan ini. Untuk menyelesaikan isu ini, anda boleh melaksanakan kod tersuai berdasarkan kaedah pembayaran WooCommerce yang digunakan.

Penyelesaian

Coretan kod berikut menapis status pesanan berbayar yang dibenarkan, melengkapkan dengan berkesan pesanan produk maya yang dibayar melalui pembayaran yang tidak dikecualikan kaedah.

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';
}
Salin selepas log masuk

Penjelasan

  • Ringan dan Berkesan: Penapis ini dicetuskan hanya apabila pembayaran dalam talian diperlukan, mengelakkan keadaan yang tidak perlu.
  • Tepat: Menghalang berbilang pemberitahuan pelanggan dengan menetapkan status pesanan kepada "selesai" sekali sahaja.

Penyelesaian Alternatif

  • Versi Diperbaiki (WooCommerce 3 dan di atas):
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' );
}
Salin selepas log masuk
  • Jawapan Asal (Semua Versi WooCommerce):
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' );
    }
}
Salin selepas log masuk

Nota: Letakkan coretan kod dalam fail functions.php tema anak aktif anda atau tema.

Atas ialah kandungan terperinci Bagaimana untuk Mengautomasikan Penyiapan Pesanan Produk Maya Berbayar dalam WooCommerce?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan