Sembunyikan kaedah pembayaran khusus untuk pelanggan baharu dalam WooCommerce 8+
P粉199248808
P粉199248808 2023-08-15 21:47:22
0
1
580
<p>Saya mencipta skrip untuk menyemak sama ada pengguna mempunyai pesanan yang lengkap. Jika pengguna tidak mempunyai pesanan yang lengkap, ia melumpuhkan kaedah pembayaran "cek". Skrip ini berfungsi, tetapi selepas menambahkannya pada fail functions.php saya, saya menghadapi masalah prestasi yang teruk semasa menyemak imbas halaman. Adakah anda melihat beberapa kemungkinan pengoptimuman atau di mana masalahnya? </p> <pre class="brush:php;toolbar:false;">function has_bought() { // Dapatkan semua pesanan pelanggan $pesanan_pelanggan = dapatkan_siaran( tatasusunan( 'numberposts' => -1, 'meta_key' => '_customer_user', 'meta_value' => get_current_user_id(), 'post_type' => 'shop_order', // Jenis pos pesanan WC 'post_status' => 'wc-completed' // Hanya pesanan dengan status "selesai" ) ); //Kembalikan "benar" apabila pelanggan sudah mempunyai pesanan kiraan pulangan( $pesanan_pelanggan ) > } add_filter('woocommerce_available_payment_gateways', 'customize_payment_gateways'); function customize_payment_gateways($gateways) { jika (!telah_membeli()) { if (isset($gateways['cek'])) { // Batalkan gerbang pembayaran "cek". unset($gateways['cek']); } } pulangkan $gateways; }</pre> <p><br /></p>
P粉199248808
P粉199248808

membalas semua(1)
P粉156415696

Tidak perlu mengulangi pertanyaan untuk menyemak sama ada pelanggan mempunyai pesanan berbayar, kaedah WC_Customer类中已经有一个轻量级的内置功能,使用get_is_paying_customer(), yang menggunakan metadata khusus kepada pengguna.

Anda boleh menggunakannya seperti ini untuk melumpuhkan kaedah pembayaran "Semak" untuk pelanggan baharu:

add_filter('woocommerce_available_payment_gateways', 'cheque_payment_gateway_only_for_paying_customers');
function cheque_payment_gateway_only_for_paying_customers($gateways) {
    if ( ! WC()->customer->get_is_paying_customer() && isset($gateways['cheque']) ) {
        unset($gateways['cheque']); // 取消“支票”付款选项
    }
    return $gateways;
}

Masukkan kod ke dalam fail functions.php tema anak anda (atau ke dalam pemalam). Diuji dan berfungsi dengan baik.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan