> 백엔드 개발 > PHP 튜토리얼 > 이전 구매를 기준으로 WooCommerce 제품 구매를 제한하는 방법은 무엇입니까?

이전 구매를 기준으로 WooCommerce 제품 구매를 제한하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-15 05:28:02
원래의
365명이 탐색했습니다.

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
}
로그인 후 복사
  • 제품 페이지: 단일 제품/장바구니에 추가 폴더의 관련 템플릿을 재정의하고 위와 동일한 로직을 사용합니다.

이 코드를 적용하면 이전 구매를 기반으로 특정 제품에 대한 액세스를 효과적으로 제한하여 사용자 경험을 향상하고 고객이 액세스할 수 있도록 보장할 수 있습니다. 해당 항목에만.

위 내용은 이전 구매를 기준으로 WooCommerce 제품 구매를 제한하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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