Maison >développement back-end >tutoriel php >Comment puis-je empêcher les achats non autorisés de produits spécifiques dans WooCommerce en exigeant que les clients aient une preuve d'un achat antérieur ?
Problème :
Les commerçants sont confrontés à un défi commun consistant à empêcher les achats non autorisés pour des raisons spécifiques produits. Dans ce cas, les clients doivent avoir une preuve d'achat préalable pour les produits « a » ou « b » pour avoir accès aux produits « c », « d » et « e ».
Solution :
Dans ce guide complet, nous vous équiperons d'une fonction personnalisée qui détermine si un client a acheté des produits prérequis avant d'autoriser l'accès à des produits restreints. articles.
function has_bought_items() { $bought = false; // Replace the numbers with your specific target product IDs $prod_arr = array( '21', '67' ); // Gather all customer orders $customer_orders = get_posts( array( 'numberposts' => -1, 'meta_key' => '_customer_user', 'meta_value' => get_current_user_id(), 'post_type' => 'shop_order', // WooCommerce orders post type 'post_status' => 'wc-completed' // Only orders with "completed" status ) ); // Process each customer order foreach ( $customer_orders as $customer_order ) { // Handle WooCommerce version compatibility $order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id; $order = wc_get_order( $customer_order ); // Iterate through products bought in the order foreach ($order->get_items() as $item) { // Product ID retrieval based on WooCommerce version if ( version_compare( WC_VERSION, '3.0', '<' ) ) $product_id = $item['product_id']; else $product_id = $item->get_product_id(); // Condition: Check if required product ID exists in the array of purchased products if ( in_array( $product_id, $prod_arr ) ) $bought = true; } } // Return true if the specific products have been purchased by the customer return $bought; }
Utilisation :
Implémentez la fonction dans vos modèles WooCommerce qui manipule les boutons d'ajout de produits au panier, tels que :
Par exemple, dans le modèle de bouton d'ajout au panier pour la page de la boutique (boucle/ajouter -to-cart.php) :
// Replace numbers with restricted product IDs $restricted_products = array( '20', '32', '75' ); // WooCommerce compatibility adjustment $product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id; // Restricted product, inactive add-to-cart button if ( !has_bought_items() && in_array( $product_id, $restricted_products ) ) { // Display an inactive add-to-cart button with a custom message // Non-restricted product or allowed product after specific purchase } else { // Regular add-to-cart button code }
Cet exemple désactive dynamiquement le bouton d'ajout au panier pour des produits spécifiques jusqu'à ce que le client ait prouvé l'achat préalable des produits requis. articles.
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!