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
Mary-Kate Olsenasal
2024-12-11 09:18:18711semak imbas

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';
}

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' );
    }
}

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' );
    }
}

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!

Kenyataan:
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