問題:
您需要確定客戶是否已購買之前在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中文網其他相關文章!