问题:
您需要确定客户是否已购买之前在 WooCommerce 中购买过特定产品(例如“a”或“b”)。这对于限制他们购买其他产品(例如“c”、“d”、“e”)的能力是必要的,除非他们满足指定的先决条件。
解决方案:
下面是一个可自定义的函数 has_bought_items(),用于评估当前客户之前是否从提供的产品 ID 数组中购买过任何商品。
代码:
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; }
用法:
要使用此函数,请将其放置在主题的functions.php 文件中,并根据需要修改 $prod_arr 数组。然后,您可以将其集成到 WooCommerce 模板中,以根据客户的购买历史记录有条件地显示或禁用“添加到购物车”按钮。
例如,在 add-to-cart.php 模板中,您可以使用以下代码:
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 }
以上是如何确定客户是否在 WooCommerce 中购买了特定产品?的详细内容。更多信息请关注PHP中文网其他相关文章!