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
Freigeben: 2024-11-15 05:28:02
Original
393 Leute haben es durchsucht

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

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

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