Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Melengkapkan Pesanan WooCommerce Berbayar Secara Automatik Berdasarkan Kaedah Pembayaran?

Bagaimana untuk Melengkapkan Pesanan WooCommerce Berbayar Secara Automatik Berdasarkan Kaedah Pembayaran?

Mary-Kate Olsen
Lepaskan: 2024-12-11 09:18:18
asal
618 orang telah melayarinya

How to Automatically Complete Paid WooCommerce Orders Based on Payment Method?

Cara Melaksanakan Autolengkap Bersyarat untuk Pesanan WooCommerce Berbayar

Dalam WooCommerce, produk maya sering menghadapi masalah dengan penyiapan pesanan automatik. Panduan komprehensif ini menyediakan berbilang penyelesaian untuk menangani masalah ini, termasuk coretan kod tersuai dan pilihan pemalam. Untuk pendekatan yang lebih terperinci, pertimbangkan untuk melaksanakan kod bersyarat berdasarkan kaedah pembayaran WooCommerce.

Kod Bersyarat untuk Autolengkapkan Pesanan Berbayar

Untuk menggunakan ciri autolengkap berdasarkan kaedah pembayaran secara terpilih , gunakan cangkuk penapis woocommerce_payment_complete_order_status, yang dicetuskan apabila pembayaran diperlukan dalam daftar keluar. Berikut ialah versi dipertingkat yang serasi dengan WooCommerce 3 dan ke atas:

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

Kod ini menukar status pesanan berbayar yang dibenarkan kepada "selesai" untuk semua gerbang pembayaran kecuali "Wayar bank" (bacs), "Tunai semasa penghantaran" (cod), dan "Cek" (cek).

Tambahan Pertimbangan

  • Kaedah ini mengelakkan penghantaran berbilang pemberitahuan pelanggan untuk perubahan status pesanan (pemprosesan hingga selesai).
  • Ia ringan dan berkesan, kerana ia hanya dicetuskan apabila pembayaran dalam talian dibuat. diperlukan.

Alternatif

Versi dipertingkatkan (2018)

add_action( 'woocommerce_thankyou', 'wc_auto_complete_paid_order', 20, 1 );
function wc_auto_complete_paid_order( $order_id ) {
    // No updates for Bank wire, Cash on delivery, and Cheque
    if ( in_array( $order->get_payment_method(), array( 'bacs', 'cod', 'cheque', '' ) ) ) {
        return;
    } 
    // Autocomplete all others
    else {
        $order->update_status( 'completed' );
    }
}
Salin selepas log masuk

Jawapan asal ( semua WooCommerce versions)

add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_paid_order', 10, 1 );
function custom_woocommerce_auto_complete_paid_order( $order_id ) {
    // No updates for Bank wire, Cash on delivery, and Cheque
    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;
    } 
    // Autocomplete all others
    else {
        $order->update_status( 'completed' );
    }
}
Salin selepas log masuk

Nota: Pastikan anda meletakkan coretan kod dalam fail functions.php tema anak anda.

Atas ialah kandungan terperinci Bagaimana untuk Melengkapkan Pesanan WooCommerce Berbayar Secara Automatik Berdasarkan Kaedah Pembayaran?. 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