Problemstellung:
In WooCommerce müssen Sie die Möglichkeit dazu einschränken bestimmte Produkte (c, d, e) kaufen, es sei denn, der Kunde hat zuvor eines der Produkte a oder b gekauft. Wenn diese Bedingung erfüllt ist, sollten die Kaufschaltflächen für die Produkte c, d und e aktiviert werden; andernfalls sollten sie deaktiviert bleiben.
Lösung:
Implementieren Sie eine bedingte Funktion, um zu überprüfen, ob ein Kunde zuvor bestimmte Produkte gekauft hat, und nutzen Sie diese Funktion, um die Sichtbarkeit zu steuern Funktionalität der Kaufschaltflächen für eingeschränkte Produkte.
Code:
Fügen Sie die folgende bedingte Funktion hinzu Ihre Datei „functions.php“:
function has_bought_items() { $bought = false; // Specify the product IDs of restricted products $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', // WC orders post type 'post_status' => 'wc-completed' // Only orders with status "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( $customer_order ); // Iterate through purchased products in the order foreach($order->get_items() as $item) { // Compatibility for WC 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 designated products were purchased if(in_array($product_id, $prod_arr)){ $bought = true; } } } // Return true if a designated product was purchased return $bought; }
Verwendung:
In Ihren relevanten WooCommerce-Vorlagen (z. B. loop/add-to-cart.php) können Sie Verwenden Sie die Funktion has_bought_items(), um die Sichtbarkeit und Funktionalität von Kaufschaltflächen für eingeschränkte Produkte zu steuern:
// Replace restricted product IDs as needed $restricted_products = array( '20', '32', '75' ); // Compatibility for WC +3 $product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id; // Customer has not purchased a designated product for restricted products if( !has_bought_items() && in_array( $product_id, $restricted_products ) ) { // Display inactive add-to-cart button with custom text }else{ // Display normal add-to-cart button }
Indem Sie dies implementieren Mit der bedingten Prüfung können Sie effektiv verhindern, dass Kunden eingeschränkte Produkte kaufen, bis sie die festgelegte Kaufvoraussetzung erfüllt haben.
Das obige ist der detaillierte Inhalt vonWie kann ich den Produktzugriff basierend auf früheren Einkäufen in WooCommerce einschränken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!