WooCommerce에서 이전 구매를 기반으로 제품 액세스를 제한하려면 어떻게 해야 하나요?

DDD
풀어 주다: 2024-11-14 13:16:02
원래의
112명이 탐색했습니다.

How can I restrict product access based on previous purchases in WooCommerce?

제품 액세스 제어를 위한 고객 구매 결정

문제 설명:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿