Heim > Artikel > Backend-Entwicklung > Wie kontrolliere ich Produktkäufe basierend auf früheren Bestellungen in WooCommerce?
In WooCommerce kann es vorkommen, dass bestimmte Produkte nur zum Kauf verfügbar sein sollten, wenn bestimmte Produkte zuvor gekauft wurden . Dies kann ein abgestuftes Einkaufssystem schaffen oder sicherstellen, dass Kunden bestimmte Anforderungen erfüllen, bevor sie Zugriff auf bestimmte Artikel freischalten.
Um diese bedingte Prüfung zu erreichen, können wir eine benutzerdefinierte Funktion verwenden, die ermittelt, ob der aktuelle Benutzer in der Vergangenheit bestimmte Produkte gekauft hat. Hier ist eine Beispielfunktion, die Sie verwenden können:
function has_bought_items() { $bought = false; // Set target product IDs $prod_arr = array( '21', '67' ); // Fetch 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' // Completed orders only ) ); foreach ( $customer_orders as $customer_order ) { // Get order ID and data $order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id; $order = wc_get_order( $order_id ); // Iterate through purchased products foreach ($order->get_items() as $item) { // Get product ID if ( version_compare( WC_VERSION, '3.0', '<' ) ) $product_id = $item['product_id']; else $product_id = $item->get_product_id(); // Check if target product ID is purchased if ( in_array( $product_id, $prod_arr ) ) $bought = true; } } // Return result return $bought; }
Sobald Sie die bedingte Funktion definiert haben, können Sie sie in Ihre WooCommerce-Vorlagen integrieren, um die Sichtbarkeit und Funktionalität zu steuern von Produkten basierend darauf, ob bestimmte Käufe getätigt wurden oder nicht. Sie könnten beispielsweise den folgenden Code in der Vorlage „loop/add-to-cart.php“ auf der Shop-Seite verwenden:
// Replace product IDs with your restricted products $restricted_products = array( '20', '32', '75' ); // Get current product ID $product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id; // If not already purchased, disable add-to-cart button if ( !has_bought_items() && in_array( $product_id, $restricted_products ) ) { echo '<a class="button greyed_button">' . __("Disabled", "your_theme_slug") . '</a>'; echo '<br><span class="greyed_button-message">' . __("Your message goes here…", "your_theme_slug") . '</span>'; } else { // Display regular add-to-cart button echo apply_filters( 'woocommerce_loop_add_to_cart_link', sprintf( '<a rel="nofollow" href="%s" data-quantity="%s" data-product_id="%s" data-product_sku="%s" class="%s">%s</a>', esc_url( $product->add_to_cart_url() ), esc_attr( isset( $quantity ) ? $quantity : 1 ), esc_attr( $product_id ), esc_attr( $product->get_sku() ), esc_attr( isset( $class ) ? $class : 'button' ), esc_html( $product->add_to_cart_text() ) ), $product ); }
Dieser Code zeigt eine deaktivierte Schaltfläche „Zum Warenkorb hinzufügen“ und eine benutzerdefinierte Schaltfläche an Nachricht für die eingeschränkten Produkte, die der Kunde noch nicht gekauft hat. Dadurch kann der Kunde auch Produkte kaufen, die er bereits gekauft hat.
Das obige ist der detaillierte Inhalt vonWie kontrolliere ich Produktkäufe basierend auf früheren Bestellungen in WooCommerce?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!