Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich WooCommerce-Produktkäufe basierend auf früheren Käufen einschränken?

Wie kann ich WooCommerce-Produktkäufe basierend auf früheren Käufen einschränken?

Linda Hamilton
Linda HamiltonOriginal
2024-11-15 05:28:02360Durchsuche

How to Restrict WooCommerce Product Purchases Based on Previous Purchases?

Verifizierung von Benutzerproduktkäufen in WooCommerce

Problem

In WooCommerce muss Benutzern der Kauf bestimmter Produkte verwehrt werden (z. B. „c“, „ d“, „e“), es sei denn, sie haben zuvor bestimmte „Gatekeeper“-Produkte erworben (z. B. „a“, „b“).

Lösung

Durch die Implementierung einer bedingten Funktion können Sie feststellen, ob ein Benutzer in der Vergangenheit die erforderlichen „Gatekeeper“-Produkte gekauft hat. Hier ist der Code, um dies zu erreichen:

function has_bought_items() {
    $bought = false;

    $prod_arr = array( '21', '67' );

    $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 ) {
        $order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id;
        $order = wc_get_order( $customer_order );

        foreach ($order->get_items() as $item) {
            if ( version_compare( WC_VERSION, '3.0', '<' ) ) 
                $product_id = $item['product_id'];
            else
                $product_id = $item->get_product_id();

            if ( in_array( $product_id, $prod_arr ) ) 
                $bought = true;
        }
    }

    return $bought;
}

Implementierung

Verwendung:

  • Shop-Seite: Überschreiben loop/add-to-cart.php in Ihrem Child-Theme und wenden Sie Folgendes an Logik:
$restricted_products = array( '20', '32', '75' );
$product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;

if ( !has_bought_items() &amp;&amp; in_array( $product_id, $restricted_products ) ) { 
    // Display inactive add-to-cart button
} else { 
    // Display normal add-to-cart button
}
  • Produktseiten: Überschreiben Sie relevante Vorlagen im Einzelprodukt-/In den Warenkorb-Ordner und verwenden Sie die gleiche Logik wie oben.

Durch die Anwendung dieses Codes schränken Sie den Zugriff auf bestimmte Produkte basierend auf vorherigen Käufen effektiv ein, verbessern das Benutzererlebnis und stellen sicher, dass Kunden nur Zugriff auf relevante Produkte haben Artikel.

Das obige ist der detaillierte Inhalt vonWie kann ich WooCommerce-Produktkäufe basierend auf früheren Käufen einschränken?. 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