Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich unbefugte Käufe bestimmter Produkte in WooCommerce verhindern, indem ich von Kunden den Nachweis eines vorherigen Kaufs verlange?

Wie kann ich unbefugte Käufe bestimmter Produkte in WooCommerce verhindern, indem ich von Kunden den Nachweis eines vorherigen Kaufs verlange?

DDD
DDDOriginal
2024-11-14 19:57:02531Durchsuche

How can I prevent unauthorized purchases of specific products in WooCommerce by requiring customers to have proof of a prior purchase?

Reagieren Sie auf die Verhinderung unbefugter Käufe in WooCommerce

Problem:

Händler stehen vor der häufigen Herausforderung, unbefugte Käufe für bestimmte Zwecke zu verhindern Produkte. In diesem Fall müssen Kunden über einen vorherigen Kaufnachweis für die Produkte „a“ oder „b“ verfügen, um Zugang zu den Produkten „c“, „d“ und „e“ zu erhalten.

Lösung:

In diesem umfassenden Leitfaden statten wir Sie mit einer benutzerdefinierten Funktion aus, die ermittelt, ob ein Kunde erforderliche Produkte gekauft hat, bevor der Zugriff auf eingeschränkte Artikel aktiviert wird.

function has_bought_items() {
    $bought = false;

    // Replace the numbers with your specific target product IDs
    $prod_arr = array( '21', '67' );

    // Gather all customer orders
    $customer_orders = get_posts( array(
        'numberposts' => -1,
        'meta_key'    => '_customer_user',
        'meta_value'  => get_current_user_id(),
        'post_type'   => 'shop_order', // WooCommerce orders post type
        'post_status' => 'wc-completed' // Only orders with "completed" status
    ) );

    // Process each customer order
    foreach ( $customer_orders as $customer_order ) {
        // Handle WooCommerce version compatibility
        $order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id;
        $order = wc_get_order( $customer_order );

        // Iterate through products bought in the order
        foreach ($order->get_items() as $item) {
            // Product ID retrieval based on WooCommerce version
            if ( version_compare( WC_VERSION, '3.0', '<' ) ) 
                $product_id = $item['product_id'];
            else
                $product_id = $item->get_product_id();

            // Condition: Check if required product ID exists in the array of purchased products
            if ( in_array( $product_id, $prod_arr ) ) 
                $bought = true;
        }
    }

    // Return true if the specific products have been purchased by the customer
    return $bought;
}

Nutzung :

Implementieren Sie die Funktion in Ihren WooCommerce-Vorlagen, die Schaltflächen zum Hinzufügen von Produkten zum Warenkorb manipulieren, wie zum Beispiel:

  • Loop/add-to-cart.php für Shop-Seite
  • Einzelprodukt-/In den Warenkorb legen-Ordner für einzelne Produktseiten

Zum Beispiel in der Add-to-Cart-Button-Vorlage für die Shop-Seite (Schleife/ add-to-cart.php):

// Replace numbers with restricted product IDs
$restricted_products = array( '20', '32', '75' );

// WooCommerce compatibility adjustment
$product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;

// Restricted product, inactive add-to-cart button
if ( !has_bought_items() && in_array( $product_id, $restricted_products ) ) { 

    // Display an inactive add-to-cart button with a custom message

// Non-restricted product or allowed product after specific purchase
} else { 

    // Regular add-to-cart button code
}

In diesem Beispiel wird die Schaltfläche „In den Warenkorb“ für bestimmte Produkte dynamisch deaktiviert, bis der Kunde den vorherigen Kauf der erforderlichen Artikel nachgewiesen hat.

Das obige ist der detaillierte Inhalt vonWie kann ich unbefugte Käufe bestimmter Produkte in WooCommerce verhindern, indem ich von Kunden den Nachweis eines vorherigen Kaufs verlange?. 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