Maison >développement back-end >tutoriel php >Comment puis-je déterminer si un client a acheté des produits spécifiques dans WooCommerce ?
Problème :
Vous devez déterminer si un client a effectué des achats antérieurs de produits spécifiques (par exemple, « a » ou « b ») dans WooCommerce. Cela est nécessaire pour restreindre leur capacité à acheter d'autres produits (par exemple, "c", "d", "e") à moins qu'ils ne remplissent les conditions préalables spécifiées.
Solution :
Vous trouverez ci-dessous une fonction personnalisable, has_bought_items(), qui évalue si le client actuel a déjà acheté des articles à partir d'un tableau d'ID de produit fourni.
Code :
function has_bought_items() { $bought = false; // Set the desired product IDs $prod_arr = array( '21', '67' ); // Retrieve all customer orders $customer_orders = get_posts( array( 'numberposts' => -1, 'meta_key' => '_customer_user', 'meta_value' => get_current_user_id(), 'post_type' => 'shop_order', 'post_status' => 'wc-completed' ) ); foreach ( $customer_orders as $customer_order ) { // Compatibility for WooCommerce 3+ $order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id; $order = wc_get_order( $order_id ); // Iterate through customer purchases foreach ($order->get_items() as $item) { // Compatibility for WooCommerce 3+ if ( version_compare( WC_VERSION, '3.0', '<' ) ) $product_id = $item['product_id']; else $product_id = $item->get_product_id(); // Check if any of the restricted products were purchased if ( in_array( $product_id, $prod_arr ) ) $bought = true; } } // Return true if a restricted product has been purchased return $bought; }
Utilisation :
Pour utiliser cette fonction, placez-la dans le fichier Functions.php de votre thème et apportez les modifications nécessaires au tableau $prod_arr. Ensuite, vous pouvez l'intégrer dans vos modèles WooCommerce pour afficher ou désactiver conditionnellement les boutons d'ajout au panier en fonction de l'historique des achats du client.
Par exemple, dans le modèle add-to-cart.php, vous pouvez utilisez le code suivant :
if ( !has_bought_items() && in_array( $product_id, $restricted_products ) ) { // Make add-to-cart button inactive (disabled styling) // Display explicit message if desired } else { // Display normal Add-To-Cart button }
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!