Überprüfen der Kaufhistorie in WooCommerce
Problem:
Sie möchten ein WooCommerce-Plugin erstellen das exklusive Angebote für Kunden mit einer Kaufhistorie bietet. Die Herausforderung besteht darin, festzustellen, ob ein Benutzer in der Vergangenheit einen Kauf getätigt hat.
Lösung:
Vergangene Käufe für Kunden überprüfen
Um zu überprüfen, ob ein Kunde in der Vergangenheit Einkäufe getätigt hat, können Sie eine benutzerdefinierte Funktion nutzen, die sowohl registrierte Benutzer als auch Gastbenutzer nahtlos verwaltet:
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; }
Verwendungsbeispiele:
Beispiel 1:Prüfung auf Käufe durch den aktuell angemeldeten Kunden
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>';
Beispiel 2:Prüfung auf Käufe durch eine bestimmte Benutzer-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>';
Beispiel 3:Überprüfen Sie die Rechnungs-E-Mail eines Gastbenutzers auf Einkäufe
// 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>'
Das obige ist der detaillierte Inhalt vonWie kann man überprüfen, ob ein WooCommerce-Benutzer frühere Käufe getätigt hat?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!