Wie kontrolliere ich Produktkäufe basierend auf früheren Bestellungen in WooCommerce?

Barbara Streisand
Freigeben: 2024-11-16 12:46:02
Original
378 Leute haben es durchsucht

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

Kontrolle von Produktkäufen basierend auf früheren Bestellungen in WooCommerce

In WooCommerce kann es vorkommen, dass bestimmte Produkte nur zum Kauf verfügbar sein sollten, wenn bestimmte Produkte zuvor gekauft wurden . Dies kann ein abgestuftes Einkaufssystem schaffen oder sicherstellen, dass Kunden bestimmte Anforderungen erfüllen, bevor sie Zugriff auf bestimmte Artikel freischalten.

Implementierung der bedingten Prüfung

Um diese bedingte Prüfung zu erreichen, können wir eine benutzerdefinierte Funktion verwenden, die ermittelt, ob der aktuelle Benutzer in der Vergangenheit bestimmte Produkte gekauft hat. Hier ist eine Beispielfunktion, die Sie verwenden können:

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;
}
Nach dem Login kopieren

Bedingungsprüfung verwenden

Sobald Sie die bedingte Funktion definiert haben, können Sie sie in Ihre WooCommerce-Vorlagen integrieren, um die Sichtbarkeit und Funktionalität zu steuern von Produkten basierend darauf, ob bestimmte Käufe getätigt wurden oder nicht. Sie könnten beispielsweise den folgenden Code in der Vorlage „loop/add-to-cart.php“ auf der Shop-Seite verwenden:

// 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 );
}
Nach dem Login kopieren

Dieser Code zeigt eine deaktivierte Schaltfläche „Zum Warenkorb hinzufügen“ und eine benutzerdefinierte Schaltfläche an Nachricht für die eingeschränkten Produkte, die der Kunde noch nicht gekauft hat. Dadurch kann der Kunde auch Produkte kaufen, die er bereits gekauft hat.

Das obige ist der detaillierte Inhalt vonWie kontrolliere ich Produktkäufe basierend auf früheren Bestellungen in WooCommerce?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage