Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich feststellen, ob ein Kunde bestimmte Produkte in WooCommerce gekauft hat?

Wie kann ich feststellen, ob ein Kunde bestimmte Produkte in WooCommerce gekauft hat?

Linda Hamilton
Linda HamiltonOriginal
2024-11-14 13:22:02557Durchsuche

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

Überprüfen Sie, ob ein Kunde bestimmte Produkte in WooCommerce gekauft hat

Problem:

Sie müssen feststellen, ob ein Kunde dies getan hat frühere Käufe bestimmter Produkte (z. B. „a“ oder „b“) in WooCommerce getätigt haben. Dies ist notwendig, um ihre Fähigkeit zum Kauf anderer Produkte (z. B. „c“, „d“, „e“) einzuschränken, es sei denn, sie erfüllen die angegebene Voraussetzung.

Lösung:

Unten finden Sie eine anpassbare Funktion, has_bought_items(), die auswertet, ob der aktuelle Kunde zuvor Artikel aus einer bereitgestellten Produktpalette gekauft hat IDs.

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

Verwendung:

Um diese Funktion zu verwenden, platzieren Sie sie in den Funktionen Ihres Themes .php-Datei und nehmen Sie nach Bedarf Änderungen am Array $prod_arr vor. Anschließend können Sie es in Ihre WooCommerce-Vorlagen integrieren, um Schaltflächen zum Hinzufügen zum Warenkorb basierend auf der Kaufhistorie des Kunden bedingt anzuzeigen oder zu deaktivieren.

Zum Beispiel können Sie dies in der Vorlage „add-to-cart.php“ tun Verwenden Sie den folgenden Code:

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
}

Das obige ist der detaillierte Inhalt vonWie kann ich feststellen, ob ein Kunde bestimmte Produkte in WooCommerce gekauft hat?. 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