首页 >后端开发 >php教程 >如何确定客户是否在 WooCommerce 中购买了特定产品?

如何确定客户是否在 WooCommerce 中购买了特定产品?

Linda Hamilton
Linda Hamilton原创
2024-11-14 13:22:02558浏览

How Can I Determine if a Customer Has Purchased Specific Products in WooCommerce?

检查客户是否在 WooCommerce 中购买了特定产品

问题:

您需要确定客户是否已购买之前在 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() &amp;&amp; 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn