Maison > développement back-end > tutoriel php > Comment vérifier si un utilisateur de WooCommerce a effectué des achats antérieurs ?

Comment vérifier si un utilisateur de WooCommerce a effectué des achats antérieurs ?

Patricia Arquette
Libérer: 2024-11-14 14:32:02
original
1070 Les gens l'ont consulté

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

Vérification de l'historique des achats dans WooCommerce

Problème :

Vous souhaitez créer un plugin WooCommerce qui propose des offres exclusives aux clients ayant un historique d'achats. Le défi consiste à déterminer si un utilisateur a effectué un achat dans le passé.

Solution :

Vérification des achats passés des clients

Pour vérifier si un client a effectué des achats antérieurs, vous pouvez tirer parti d'une fonction personnalisée qui gère de manière transparente à la fois les utilisateurs enregistrés et les invités. utilisateurs :

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;
}
Copier après la connexion

Exemples d'utilisation :

Exemple 1 : Vérifier les achats du client actuellement connecté

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>';
Copier après la connexion

Exemple 2 : Vérifier les achats d'un utilisateur spécifique 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>';
Copier après la connexion

Exemple 3 : Vérifier les achats via l'e-mail de facturation d'un utilisateur invité

// 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>'
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal