WooCommerce 사용자가 과거에 구매했는지 확인하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-14 14:32:02
원래의
986명이 탐색했습니다.

How to Check if a WooCommerce User Has Made Past Purchases?

WooCommerce에서 구매 내역 확인

문제:

WooCommerce 플러그인을 만들고 싶습니다. 구매 이력이 있는 고객에게 독점 특가를 제공하는 회사입니다. 문제는 사용자가 과거에 구매한 적이 있는지 확인하는 것입니다.

해결책:

고객의 과거 구매 확인

고객이 과거에 구매한 적이 있는지 확인하려면 등록된 사용자와 게스트 사용자를 모두 원활하게 처리하는 맞춤 기능을 활용할 수 있습니다.

function has_bought( $value = 0 ) {
    // Handling for registered users
    if ( is_numeric( $value) ) { 
        // Use current user ID if not provided
        $meta_key   = '_customer_user';
        $meta_value = $value == 0 ? (int) get_current_user_id() : (int) $value;
    } 
    // Handling for guest users
    else { 
        $meta_key   = '_billing_email';
        $meta_value = sanitize_email( $value );
    }
    
    global $wpdb;
    
    // Determine if any paid orders exist
    $paid_order_statuses = array_map( 'esc_sql', wc_get_is_paid_statuses() );

    $count = $wpdb->get_var( $wpdb->prepare("
        SELECT COUNT(p.ID) FROM {$wpdb->prefix}posts AS p
        INNER JOIN {$wpdb->prefix}postmeta AS pm ON p.ID = pm.post_id
        WHERE p.post_status IN ( 'wc-" . implode( ""','wc-", $paid_order_statuses ) . ""' )
        AND p.post_type LIKE 'shop_order'
        AND pm.meta_key = '%s'
        AND pm.meta_value = %s
        LIMIT 1
    ", $meta_key, $meta_value ) );

    // Return true if at least one paid order exists
    return $count > 0;
}
로그인 후 복사

사용 예:

예시 1: 현재 로그인한 고객의 구매 확인

if( has_bought() )
    echo '<p>You have already made a purchase</p>';
else
    echo '<p>Welcome, for your first purchase you will get a discount of 10%</p>';
로그인 후 복사

예 2: 특정 사용자 ID의 구매 확인

// Define the user ID
$user_id = 85;

if( has_bought( $user_id ) )
        echo '<p>customer have already made a purchase</p>';
    else
        echo '<p>Customer with 0 purchases</p>';
로그인 후 복사

예 3: 게스트 사용자의 청구 이메일로 구매 확인

// Define the billing email (string)
$email = '[email protected]';

if( has_bought( $email ) )
        echo '<p>customer have already made a purchase</p>';
    else
        echo '<p>Customer with 0 purchases</p>'
로그인 후 복사

위 내용은 WooCommerce 사용자가 과거에 구매했는지 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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