Heim >Backend-Entwicklung >PHP-Tutorial >Wie kontrolliere ich Produktkäufe basierend auf früheren Bestellungen in WooCommerce?

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

Barbara Streisand
Barbara StreisandOriginal
2024-11-16 12:46:02462Durchsuche

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;
}

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 );
}

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!

Stellungnahme:
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