Wie kann man überprüfen, ob ein WooCommerce-Benutzer frühere Käufe getätigt hat?

Patricia Arquette
Freigeben: 2024-11-14 14:32:02
Original
985 Leute haben es durchsucht

How to Check if a WooCommerce User Has Made Past Purchases?

Ü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;
}
Nach dem Login kopieren

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>';
Nach dem Login kopieren

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>';
Nach dem Login kopieren

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>'
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage