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