>백엔드 개발 >PHP 튜토리얼 >고객이 WooCommerce에서 이전에 구매했는지 확인하는 방법은 무엇입니까?

고객이 WooCommerce에서 이전에 구매했는지 확인하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-17 16:15:02454검색

How to Check if a Customer Has Made a Previous Purchase in WooCommerce?

WooCommerce에서 고객 구매 내역 확인

WooCommerce에서는 고객이 이전에 구매한 적이 있는지 확인해야 하는 경우가 많습니다. 이 정보는 구매 내역을 바탕으로 맞춤형 할인, 리워드, 기타 프로모션을 제공하는 데 활용될 수 있습니다.

해결책

다음 함수 has_bought()는 구매 내역을 효율적으로 확인합니다. 특정 고객이 WooCommerce에서 유료 주문을 했습니다:

function has_bought( $value = 0 ) {
    if ( ! is_user_logged_in() && $value === 0 ) {
        return false;
    }

    global $wpdb;

    // Based on user ID (registered users)
    if ( is_numeric( $value) ) { 
        $meta_key   = '_customer_user';
        $meta_value = $value == 0 ? (int) get_current_user_id() : (int) $value;
    } 
    // Based on billing email (Guest users)
    else { 
        $meta_key   = '_billing_email';
        $meta_value = sanitize_email( $value );
    }

    $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 a boolean value based on orders count
    return $count > 0;
}

사용법:

이 기능은 로그인한 고객의 구매 내역을 확인하는 데 다양한 방법으로 활용할 수 있습니다. 사용자 및 손님:

  • 구매 확인:

    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>';
  • 특정 사용자 확인 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>';
  • 결제 이메일로 게스트 사용자 확인:

    $email = '[email&#160;protected]';
    
    if( has_bought( $email ) )
          echo '<p>customer have already made a purchase</p>';
      else
          echo '<p>Customer with 0 purchases</p>'

추가 참고 사항:

청구 이메일을 기반으로 게스트 사용자를 처리하는 등 정확성과 보안이 향상되도록 이 기능이 강화되었습니다. WooCommerce 3에서 테스트되었으며 이전 버전에서도 작동합니다.

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

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