ホームページ >バックエンド開発 >PHPチュートリアル >顧客が WooCommerce で特定の商品を購入したかどうかを確認するにはどうすればよいですか?
問題:
顧客が特定の商品を購入したかどうかを確認する必要がありますWooCommerce で特定の商品 (「a」または「b」など) を以前に購入したことがある。これは、指定された前提条件を満たさない限り、他の製品 (「c」、「d」、「e」など) を購入できるように制限するために必要です。
解決策:
以下はカスタマイズ可能な関数 has_bought_items() で、現在の顧客が提供された製品配列から以前に商品を購入したかどうかを評価します。 ID:
コード:
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; }
使用法:
この関数を使用するには、テーマの関数に配置します。 .php ファイルを開き、必要に応じて $prod_arr 配列を変更します。その後、これを WooCommerce テンプレートに統合して、顧客の購入履歴に基づいて条件付きで [カートに追加] ボタンを表示または無効にすることができます。
たとえば、add-to-cart.php テンプレートでは、次のようにすることができます。次のコードを使用します:
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 }
以上が顧客が WooCommerce で特定の商品を購入したかどうかを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。