首页 > 解决方案 > 在 Woocommerce 中只允许为特定产品类别购买一种产品

问题描述

我想限制用户可以从特定类别购买产品的次数。我在 function.php 中有这段代码(来自这里),它将整个商店限制为一次购买。

add_filter('woocommerce_add_to_cart_validation','rei_woocommerce_add_to_cart_validation',20, 2);
function rei_woocommerce_add_to_cart_validation($valid, $product_id){
    $current_user = wp_get_current_user();
    if ( wc_customer_bought_product( $current_user->user_email, $current_user->ID, $product_id)) {
        wc_add_notice( __( 'Error message here', 'woocommerce' ), 'error' );
        $valid = false;
    }
    return $valid;
}

我需要添加一个条件,即代码仅适用于特定类别的产品(按类别名称或 ID)。

谢谢。

标签: phpwordpresswoocommerceproductcustom-taxonomy

解决方案


在以下代码中,您必须t-shirt用您的产品类别(名称、slug 或 ID)替换:

add_filter('woocommerce_add_to_cart_validation','filter_add_to_cart_validation',20, 2);
function filter_add_to_cart_validation($valid, $product_id){
    $current_user = wp_get_current_user();
    if ( wc_customer_bought_product( $current_user->user_email, $current_user->ID, $product_id) 
    && has_term( array('t-shirt'), 'product_cat', $product_id ) ) {
        wc_add_notice( __( 'Error message here', 'woocommerce' ), 'error' );
        $valid = false;
    }
    return $valid;
}

代码位于您的活动子主题(或活动主题)的 function.php 文件中。测试和工作。

如果您需要排除产品类别,您可以在!之前添加一个has_term()

 && ! has_term( array('t-shirt'), 'product_cat', $product_id ) ) {

推荐阅读