Heim > Artikel > Backend-Entwicklung > Wie kann ich überprüfen, ob ein Kunde bereits einen Kauf in WooCommerce getätigt hat?
Überprüfen der Kundenkaufhistorie in WooCommerce
In WooCommerce ist es oft notwendig, festzustellen, ob ein Kunde bereits frühere Einkäufe getätigt hat. Diese Informationen können verwendet werden, um personalisierte Rabatte, Prämien oder andere Werbeaktionen basierend auf der Kaufhistorie anzubieten.
Lösung
Die folgende Funktion, has_bought(), prüft effizient, ob Ein bestimmter Kunde hat alle bezahlten Bestellungen in 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; }
Nutzung:
Diese Funktion kann auf verschiedene Arten verwendet werden, um die Kaufhistorie der angemeldeten Personen zu überprüfen Benutzer und Gäste:
Suche nach einem Kauf:
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>';
Suche nach einem bestimmten Benutzer per 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>';
Suche nach einem Gastbenutzer per Rechnungs-E-Mail:
$email = '[email protected]'; if( has_bought( $email ) ) echo '<p>customer have already made a purchase</p>'; else echo '<p>Customer with 0 purchases</p>'
Zusätzlicher Hinweis:
Diese Funktion wurde verbessert, um die Genauigkeit und Sicherheit zu verbessern, einschließlich der Handhabung von Gastbenutzern basierend auf Rechnungs-E-Mails. Es wurde auf WooCommerce 3 getestet und sollte auch auf früheren Versionen funktionieren.
Das obige ist der detaillierte Inhalt vonWie kann ich überprüfen, ob ein Kunde bereits einen Kauf in WooCommerce getätigt hat?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!