Maison >développement back-end >tutoriel php >Comment déterminer si un client WooCommerce a un historique d'achats ?

Comment déterminer si un client WooCommerce a un historique d'achats ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-13 13:09:02971parcourir

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

Détermination de l'historique des achats des clients dans WooCommerce

Lors du développement de plugins WooCommerce, il devient souvent nécessaire de vérifier si un client a effectué des achats précédents. Ces informations peuvent être exploitées pour adapter les offres et les promotions en conséquence.

Vérification de l'historique des achats du client

Pour déterminer si un client a effectué des achats, une fonction légère et optimisée peut être employé :

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

Exemples d'utilisation

1. Vérification des achats des utilisateurs enregistrés :

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. Vérification des achats des utilisateurs invités en fonction de l'e-mail de facturation :

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

En utilisant cette fonction, les développeurs de plugins peuvent facilement déterminer si un client a un historique d'achats dans WooCommerce, permettant ainsi des promotions et des remises ciblées pour les clients améliorés. fiançailles.

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