首頁 >後端開發 >php教程 >如何確定客戶是否在 WooCommerce 中購買了特定產品?

如何確定客戶是否在 WooCommerce 中購買了特定產品?

Linda Hamilton
Linda Hamilton原創
2024-11-14 13:22:02558瀏覽

How Can I Determine if a Customer Has Purchased Specific Products in WooCommerce?

檢查客戶是否在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() &amp;&amp; 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn