Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Boleh Melengkapkan Pesanan WooCommerce Berbayar Secara Automatik dengan Logik Bersyarat?

Bagaimanakah Saya Boleh Melengkapkan Pesanan WooCommerce Berbayar Secara Automatik dengan Logik Bersyarat?

Susan Sarandon
Lepaskan: 2024-12-27 10:57:08
asal
966 orang telah melayarinya

How Can I Automatically Complete Paid WooCommerce Orders with Conditional Logic?

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';
}
Salin selepas log masuk
  • Kod ini menukar status pesanan berbayar yang dibenarkan kepada hanya memasukkan "selesai".

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' );
}
Salin selepas log masuk
  • Kod ini hanya mengemas kini status kepada "selesai" untuk kaedah pembayaran selain daripada "bacs", "cod" dan " cek".

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' );
    }
}
Salin selepas log masuk
  • Kod ini menggunakan get_post_meta() untuk menyemak kaedah pembayaran "bacs", "cod" dan "cek" dan melangkau pesanan tersebut.

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!

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