Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann man feststellen, ob ein WooCommerce-Kunde eine Kaufhistorie hat?

Wie kann man feststellen, ob ein WooCommerce-Kunde eine Kaufhistorie hat?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-13 13:09:02982Durchsuche

How to Determine if a WooCommerce Customer Has a Purchase History?

Ermittlung der Kundenkaufhistorie in WooCommerce

Bei der Entwicklung von WooCommerce-Plugins ist es oft notwendig zu überprüfen, ob ein Kunde bereits frühere Käufe getätigt hat. Diese Informationen können genutzt werden, um Angebote und Werbeaktionen entsprechend anzupassen.

Überprüfen der Kaufhistorie des Kunden

Um festzustellen, ob ein Kunde Einkäufe getätigt hat, kann eine schlanke und optimierte Funktion verwendet werden eingesetzt werden:

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 Beispiele

1. Auf Käufe registrierter Benutzer prüfen:

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

2. Überprüfung auf Käufe von Gastbenutzern anhand der Rechnungs-E-Mail:

// Define the billing email (string)
$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>'

Durch den Einsatz dieser Funktion können Plugin-Entwickler leicht feststellen, ob ein Kunde eine Kaufhistorie in WooCommerce hat, und so gezielte Werbeaktionen und Rabatte für erweiterte Kunden ermöglichen Engagement.

Das obige ist der detaillierte Inhalt vonWie kann man feststellen, ob ein WooCommerce-Kunde eine Kaufhistorie 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