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