Maison > développement back-end > tutoriel php > Comment puis-je déterminer si un client a acheté des produits spécifiques dans WooCommerce ?

Comment puis-je déterminer si un client a acheté des produits spécifiques dans WooCommerce ?

Linda Hamilton
Libérer: 2024-11-14 13:22:02
original
581 Les gens l'ont consulté

How Can I Determine if a Customer Has Purchased Specific Products in WooCommerce?

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

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() &amp;&amp; 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
}
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!

source:php.cn
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