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
Linda HamiltonOriginal
2024-11-25 16:54:15907Durchsuche

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;
}

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>';

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>'

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!

Stellungnahme:
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