Menyembunyikan kaedah pembayaran tertentu boleh dilakukan untuk pelanggan baharu dengan WooCommerce versi 5.6+
P粉283559033
P粉283559033 2023-08-15 13:19:37
0
1
598
<p>Saya mencipta skrip yang menyemak sama ada pengguna mempunyai pesanan yang lengkap. Jika pengguna tidak mempunyai pesanan yang lengkap, ia melumpuhkan kaedah pembayaran "cek". Fungsi 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 artikel pesanan WC 'post_status' => 'wc-completed' // Hanya masukkan 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粉283559033
P粉283559033

membalas semua(1)
P粉985686557

Tidak perlu menggunakan pertanyaan yang lebih berat untuk menyemak sama ada pelanggan mempunyai pesanan berbayar kerana kaedah WC_Customer类中已经有一个轻量级的内置功能,使用get_is_paying_customer(), yang menggunakan metadata pengguna tersuai dan tersedia sejak WooCommerce versi 5.8+.

Anda boleh melumpuhkan pembayaran "Semak" untuk pelanggan baharu menggunakan:

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

Letakkan kod dalam fail functions.php tema anak anda (atau dalam pemalam). Diuji dan tersedia.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!