首頁 >後端開發 >php教程 >如何根據先前的購買限制 WooCommerce 產品購買?

如何根據先前的購買限制 WooCommerce 產品購買?

Linda Hamilton
Linda Hamilton原創
2024-11-15 05:28:02360瀏覽

How to Restrict WooCommerce Product Purchases Based on Previous Purchases?

在WooCommerce 中驗證使用者產品購買

問題

在WooCommerce 中,必須限制使用者購買某些產品(例如「c」、「 d」、「e」),除非他們之前已經獲得了特定的「看門人」產品(例如「a」、「b」)。

解決方案

透過實現條件函數,您可以確定使用者過去是否購買過所需的「看門人」產品。以下是實現此目的的代碼:

function has_bought_items() {
    $bought = false;

    $prod_arr = array( '21', '67' );

    $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 ) {
        $order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id;
        $order = wc_get_order( $customer_order );

        foreach ($order->get_items() as $item) {
            if ( version_compare( WC_VERSION, '3.0', '<' ) ) 
                $product_id = $item['product_id'];
            else
                $product_id = $item->get_product_id();

            if ( in_array( $product_id, $prod_arr ) ) 
                $bought = true;
        }
    }

    return $bought;
}

實現

用法:

  • 商店頁面:覆蓋在您的子主題中添加loop /add-to-cart.php並應用以下邏輯:
$restricted_products = array( '20', '32', '75' );
$product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;

if ( !has_bought_items() &amp;&amp; in_array( $product_id, $restricted_products ) ) { 
    // Display inactive add-to-cart button
} else { 
    // Display normal add-to-cart button
}
  • 產品頁面:覆蓋單一產品中的相關模板/add-to-cart資料夾並使用與上述相同的邏輯。

透過應用此程式碼,您可以根據先前的購買情況有效限制對特定產品的訪問,從而增強用戶體驗並確保客戶擁有僅訪問相關項目。

以上是如何根據先前的購買限制 WooCommerce 產品購買?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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