Comment vérifier si un client a effectué un achat dans WooCommerce
Dans WooCommerce, offrir des incitations aux clients fidèles qui ont déjà acheté est un pratique courante. Pour mettre en œuvre efficacement de telles stratégies, il devient nécessaire de vérifier si un client a déjà effectué des achats.
Vérification de l'historique des achats
Pour connaître l'historique des achats d'un client, WooCommerce fournit une fonction conditionnelle légère et efficace appelée has_bought(). Cette fonction analyse les données des clients pour déterminer s'ils ont déjà effectué un achat.
La fonction gère à la fois les utilisateurs enregistrés et les invités :
Implémentation de la fonction
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
Connecté Client :
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>';
Invité avec e-mail de facturation :
$email = '[email protected]'; if( has_bought( $email ) ) echo '<p>customer have already made a purchase</p>'; else echo '<p>Customer with 0 purchases</p>'
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!