>백엔드 개발 >PHP 튜토리얼 >고객에게 이전 구매 증거를 요구하여 WooCommerce에서 특정 제품의 무단 구매를 방지하려면 어떻게 해야 합니까?

고객에게 이전 구매 증거를 요구하여 WooCommerce에서 특정 제품의 무단 구매를 방지하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-11-14 19:57:02600검색

How can I prevent unauthorized purchases of specific products in WooCommerce by requiring customers to have proof of a prior purchase?

WooCommerce의 무단 구매 방지에 대한 대응

문제:

판매자는 특정 제품에 대한 무단 구매를 방지해야 하는 공통적인 문제에 직면합니다. 제품. 이 경우 고객이 "c", "d" 및 "e" 제품에 액세스하려면 "a" 또는 "b" 제품에 대한 사전 구매 증거가 있어야 합니다.

해결책:

이 종합 가이드에서는 제한된 제품에 대한 액세스를 활성화하기 전에 고객이 필수 제품을 구매했는지 확인하는 맞춤형 기능을 제공합니다.

function has_bought_items() {
    $bought = false;

    // Replace the numbers with your specific target product IDs
    $prod_arr = array( '21', '67' );

    // Gather all customer orders
    $customer_orders = get_posts( array(
        'numberposts' => -1,
        'meta_key'    => '_customer_user',
        'meta_value'  => get_current_user_id(),
        'post_type'   => 'shop_order', // WooCommerce orders post type
        'post_status' => 'wc-completed' // Only orders with "completed" status
    ) );

    // Process each customer order
    foreach ( $customer_orders as $customer_order ) {
        // Handle WooCommerce version compatibility
        $order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id;
        $order = wc_get_order( $customer_order );

        // Iterate through products bought in the order
        foreach ($order->get_items() as $item) {
            // Product ID retrieval based on WooCommerce version
            if ( version_compare( WC_VERSION, '3.0', '<' ) ) 
                $product_id = $item['product_id'];
            else
                $product_id = $item->get_product_id();

            // Condition: Check if required product ID exists in the array of purchased products
            if ( in_array( $product_id, $prod_arr ) ) 
                $bought = true;
        }
    }

    // Return true if the specific products have been purchased by the customer
    return $bought;
}

사용법:

제품 장바구니에 추가 버튼을 조작하는 기능을 WooCommerce 템플릿에 구현하세요. 예:

  • 상점에 대한 루프/add-to-cart.php 페이지
  • 개별 제품 페이지에 대한 단일 제품/장바구니에 추가 폴더

예를 들어 쇼핑 페이지의 장바구니에 추가 버튼 템플릿(루프/추가 -to-cart.php):

// Replace numbers with restricted product IDs
$restricted_products = array( '20', '32', '75' );

// WooCommerce compatibility adjustment
$product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;

// Restricted product, inactive add-to-cart button
if ( !has_bought_items() && in_array( $product_id, $restricted_products ) ) { 

    // Display an inactive add-to-cart button with a custom message

// Non-restricted product or allowed product after specific purchase
} else { 

    // Regular add-to-cart button code
}

이 예는 고객이 이전에 입증할 때까지 특정 제품에 대한 장바구니 추가 버튼을 동적으로 비활성화합니다. 필수품 구매

위 내용은 고객에게 이전 구매 증거를 요구하여 WooCommerce에서 특정 제품의 무단 구매를 방지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.