Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich überprüfen, ob ein Kunde bereits einen Kauf in WooCommerce getätigt hat?

Wie kann ich überprüfen, ob ein Kunde bereits einen Kauf in WooCommerce getätigt hat?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-17 16:15:02451Durchsuche

How to Check if a Customer Has Made a Previous Purchase in WooCommerce?

Ü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&#160;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!

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