問題ステートメント:
WooCommerce では、次の機能を制限する必要があります。顧客が以前に製品 a または b を購入したことがない限り、特定の製品 (c、d、e) を購入します。この条件が満たされる場合、製品 c、d、および e の購入ボタンが有効になるはずです。それ以外の場合は、無効のままにする必要があります。
解決策:
顧客が指定された製品を以前に購入したかどうかを確認する条件付き関数を実装し、この関数を活用して可視性と制限付きの購入ボタンの機能products.
コード:
次の条件関数をfunctions.php ファイルに追加します:
function has_bought_items() { $bought = false; // Specify the product IDs of restricted products $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', // WC orders post type 'post_status' => 'wc-completed' // Only orders with status "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( $customer_order ); // Iterate through purchased products in the order foreach($order->get_items() as $item) { // Compatibility for WC 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 designated products were purchased if(in_array($product_id, $prod_arr)){ $bought = true; } } } // Return true if a designated product was purchased return $bought; }
使用法:
関連する WooCommerce テンプレート内 (例: loop/add-to-cart.php) を使用すると、has_bought_items() 関数を使用して、制限された商品の購入ボタンの表示と機能を制御できます。
// Replace restricted product IDs as needed $restricted_products = array( '20', '32', '75' ); // Compatibility for WC +3 $product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id; // Customer has not purchased a designated product for restricted products if( !has_bought_items() && in_array( $product_id, $restricted_products ) ) { // Display inactive add-to-cart button with custom text }else{ // Display normal add-to-cart button }
この条件チェックを実装することで、効果的に次のことができます。指定された購入要件を満たすまで、顧客が制限された製品を購入できないようにします。
以上がWooCommerce での以前の購入に基づいて製品へのアクセスを制限するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。