Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich feststellen, 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() && 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!