Masalah:
Anda perlu menentukan sama ada pelanggan mempunyai membuat pembelian produk tertentu sebelum ini (cth., "a" atau "b") dalam WooCommerce. Ini adalah perlu untuk menyekat keupayaan mereka untuk membeli produk lain (cth., "c", "d", "e") melainkan mereka telah memenuhi prasyarat yang ditentukan.
Penyelesaian:
Di bawah ialah fungsi yang boleh disesuaikan, has_bought_items(), yang menilai sama ada pelanggan semasa sebelum ini telah membeli sebarang item daripada pelbagai ID produk yang disediakan.
Kod:
function has_bought_items() { $bought = false; // Set the desired product IDs $prod_arr = array( '21', '67' ); // Retrieve all customer orders $customer_orders = get_posts( array( 'numberposts' => -1, 'meta_key' => '_customer_user', 'meta_value' => get_current_user_id(), 'post_type' => 'shop_order', 'post_status' => 'wc-completed' ) ); foreach ( $customer_orders as $customer_order ) { // Compatibility for WooCommerce 3+ $order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id; $order = wc_get_order( $order_id ); // Iterate through customer purchases foreach ($order->get_items() as $item) { // Compatibility for WooCommerce 3+ if ( version_compare( WC_VERSION, '3.0', '<' ) ) $product_id = $item['product_id']; else $product_id = $item->get_product_id(); // Check if any of the restricted products were purchased if ( in_array( $product_id, $prod_arr ) ) $bought = true; } } // Return true if a restricted product has been purchased return $bought; }
Penggunaan:
Untuk menggunakan fungsi ini, letakkannya dalam fail functions.php tema anda dan buat pengubahsuaian pada tatasusunan $prod_arr mengikut keperluan. Kemudian, anda boleh menyepadukannya ke dalam templat WooCommerce anda untuk memaparkan atau melumpuhkan butang tambah ke troli secara bersyarat berdasarkan sejarah pembelian pelanggan.
Sebagai contoh, dalam templat add-to-cart.php, anda boleh gunakan kod berikut:
if ( !has_bought_items() && in_array( $product_id, $restricted_products ) ) { // Make add-to-cart button inactive (disabled styling) // Display explicit message if desired } else { // Display normal Add-To-Cart button }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan jika Pelanggan Telah Membeli Produk Tertentu dalam WooCommerce?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!