Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah saya boleh menghalang pembelian produk tertentu yang tidak dibenarkan dalam WooCommerce dengan menghendaki pelanggan mempunyai bukti pembelian terdahulu?
Masalah:
Peniaga menghadapi cabaran biasa untuk menghalang pembelian tanpa kebenaran untuk tertentu produk. Dalam kes ini, pelanggan mesti mempunyai bukti pembelian terdahulu untuk produk "a" atau "b" untuk mendapatkan akses kepada produk "c," "d" dan "e."
Penyelesaian:
Dalam panduan komprehensif ini, kami akan melengkapkan anda dengan fungsi tersuai yang menentukan sama ada pelanggan telah membeli produk prasyarat sebelum membolehkan akses kepada terhad item.
function has_bought_items() { $bought = false; // Replace the numbers with your specific target product IDs $prod_arr = array( '21', '67' ); // Gather all customer orders $customer_orders = get_posts( array( 'numberposts' => -1, 'meta_key' => '_customer_user', 'meta_value' => get_current_user_id(), 'post_type' => 'shop_order', // WooCommerce orders post type 'post_status' => 'wc-completed' // Only orders with "completed" status ) ); // Process each customer order foreach ( $customer_orders as $customer_order ) { // Handle WooCommerce version compatibility $order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id; $order = wc_get_order( $customer_order ); // Iterate through products bought in the order foreach ($order->get_items() as $item) { // Product ID retrieval based on WooCommerce version if ( version_compare( WC_VERSION, '3.0', '<' ) ) $product_id = $item['product_id']; else $product_id = $item->get_product_id(); // Condition: Check if required product ID exists in the array of purchased products if ( in_array( $product_id, $prod_arr ) ) $bought = true; } } // Return true if the specific products have been purchased by the customer return $bought; }
Penggunaan:
Laksanakan fungsi dalam templat WooCommerce anda yang memanipulasi butang tambah ke troli produk, seperti:
Sebagai contoh, dalam templat butang tambah ke troli untuk halaman kedai (gelung/tambah -to-cart.php):
// Replace numbers with restricted product IDs $restricted_products = array( '20', '32', '75' ); // WooCommerce compatibility adjustment $product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id; // Restricted product, inactive add-to-cart button if ( !has_bought_items() && in_array( $product_id, $restricted_products ) ) { // Display an inactive add-to-cart button with a custom message // Non-restricted product or allowed product after specific purchase } else { // Regular add-to-cart button code }
Contoh ini melumpuhkan butang tambah ke troli secara dinamik untuk produk tertentu sehingga pelanggan mempunyai pembelian yang terbukti sebelum item yang diperlukan.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menghalang pembelian produk tertentu yang tidak dibenarkan dalam WooCommerce dengan menghendaki pelanggan mempunyai bukti pembelian terdahulu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!