Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann man feststellen, ob ein Kunde einen Kauf in WooCommerce getätigt hat?

Wie kann man feststellen, ob ein Kunde einen Kauf in WooCommerce getätigt hat?

Linda Hamilton
Freigeben: 2024-11-25 16:54:15
Original
912 Leute haben es durchsucht

How to Determine if a Customer Has Made a Purchase in WooCommerce?

So überprüfen Sie, ob ein Kunde einen Kauf in WooCommerce getätigt hat

In WooCommerce ist es wichtig, Anreize für treue Kunden zu schaffen, die bereits gekauft haben gängige Praxis. Um solche Strategien effektiv umzusetzen, ist es notwendig zu überprüfen, ob ein Kunde schon einmal Einkäufe getätigt hat.

Überprüfung der Kaufhistorie

Um die Kaufhistorie eines Kunden zu ermitteln, bietet WooCommerce an eine einfache und effiziente bedingte Funktion namens has_bought(). Diese Funktion analysiert Kundendaten, um festzustellen, ob sie zuvor einen Kauf getätigt haben.

Die Funktion verwaltet sowohl registrierte Benutzer als auch Gäste:

  • Registrierte Benutzer:Wenn nein Wird eine Benutzer-ID angegeben, verwendet die Funktion die ID des aktuell angemeldeten Benutzers.
  • Gäste: Für Für Gäste benötigt die Funktion ihre Rechnungs-E-Mail-Adresse als Argument.

Implementierung der Funktion

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

Verwendungsbeispiele

Eingeloggt Kunde:

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

Gast mit Rechnungs-E-Mail:

$email = '[email&#160;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 feststellen, ob ein Kunde einen Kauf in WooCommerce 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