Разрешить только одну покупку продукта для определенной категории продуктов в Woocommerce - PullRequest
0 голосов
/ 29 ноября 2018

Я хочу ограничить количество раз, когда пользователь может приобрести товар из определенной категории.У меня есть этот код ( отсюда ) в 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;
}

, и мне нужно добавить условие, что код будет применяться толькок продуктам из определенной категории (по названию категории или идентификатору).

спасибо.

1 Ответ

0 голосов
/ 29 ноября 2018

В следующем коде вам придется заменить t-shirt на категорию вашего продукта (имя, слаг или идентификатор) :

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 ) ) {
...