Comment contrôler les achats de produits en fonction des commandes précédentes dans WooCommerce ?

Barbara Streisand
Libérer: 2024-11-16 12:46:02
original
378 Les gens l'ont consulté

How to Control Product Purchases Based on Previous Orders in WooCommerce?

Contrôle des achats de produits en fonction des commandes précédentes dans WooCommerce

Dans WooCommerce, vous pouvez rencontrer des scénarios dans lesquels certains produits ne devraient être disponibles à l'achat que si des produits spécifiques ont déjà été achetés . Cela peut créer un système d'achat à plusieurs niveaux ou garantir que les clients répondent à certaines exigences avant de débloquer l'accès à des articles spécifiques.

Mise en œuvre du contrôle conditionnel

Pour réaliser ce contrôle conditionnel, nous pouvons utiliser une fonction personnalisée qui détermine si l'utilisateur actuel a acheté des produits spécifiques dans le passé. Voici un exemple de fonction que vous pouvez utiliser :

function has_bought_items() {
    $bought = false;

    // Set target product IDs
    $prod_arr = array( '21', '67' );

    // Fetch customer orders
    $customer_orders = get_posts( array(
        'numberposts' => -1,
        'meta_key'    => '_customer_user',
        'meta_value'  => get_current_user_id(),
        'post_type'   => 'shop_order', // WC orders post type
        'post_status' => 'wc-completed' // Completed orders only
    ) );

    foreach ( $customer_orders as $customer_order ) {
        // Get order ID and data
        $order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id;
        $order = wc_get_order( $order_id );

        // Iterate through purchased products
        foreach ($order->get_items() as $item) {
            // Get product ID
            if ( version_compare( WC_VERSION, '3.0', '<' ) )
                $product_id = $item['product_id'];
            else
                $product_id = $item->get_product_id();

            // Check if target product ID is purchased
            if ( in_array( $product_id, $prod_arr ) )
                $bought = true;
        }
    }

    // Return result
    return $bought;
}
Copier après la connexion

Utilisation de la vérification conditionnelle

Une fois que vous avez défini la fonction conditionnelle, vous pouvez l'intégrer dans vos modèles WooCommerce pour contrôler la visibilité et les fonctionnalités. de produits selon que des achats spécifiques ont été effectués ou non. Par exemple, vous pouvez utiliser le code suivant dans le modèle loop/add-to-cart.php sur la page de la boutique :

// Replace product IDs with your restricted products
$restricted_products = array( '20', '32', '75' );

// Get current product ID
$product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;

// If not already purchased, disable add-to-cart button
if ( !has_bought_items() &amp;&amp; in_array( $product_id, $restricted_products ) ) {
    echo '<a class="button greyed_button">' . __("Disabled", "your_theme_slug") . '</a>';
    echo '<br><span class="greyed_button-message">' . __("Your message goes here…", "your_theme_slug") . '</span>';
} else {
    // Display regular add-to-cart button
    echo apply_filters( 'woocommerce_loop_add_to_cart_link',
        sprintf( '<a rel="nofollow" href="%s" data-quantity="%s" data-product_id="%s" data-product_sku="%s" class="%s">%s</a>',
            esc_url( $product->add_to_cart_url() ),
            esc_attr( isset( $quantity ) ? $quantity : 1 ),
            esc_attr( $product_id ),
            esc_attr( $product->get_sku() ),
            esc_attr( isset( $class ) ? $class : 'button' ),
            esc_html( $product->add_to_cart_text() )
        ),
    $product );
}
Copier après la connexion

Ce code affichera un bouton d'ajout au panier désactivé et un bouton personnalisé message pour les produits restreints que le client n'a pas encore acheté. Cela permettra également au client d'acheter des produits qu'il a déjà achetés.

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