Добавить функцию WooCommerce для определенной категории - PullRequest
2 голосов
/ 10 апреля 2020

Я использую приведенный ниже код в функциях моей темы. Файл php увеличивает количество продукта WooCommerce на 0,5 вместо 1.

add_filter('woocommerce_quantity_input_min', 'min_decimal');
function min_decimal($val) {
    return 0.5;
}

// Add step value to the quantity field (default = 1)
add_filter('woocommerce_quantity_input_step', 'nsk_allow_decimal');
function nsk_allow_decimal($val) {
    return 0.5;
}

// Removes the WooCommerce filter, that is validating the quantity to be an int
remove_filter('woocommerce_stock_amount', 'intval');

// Add a filter, that validates the quantity to be a float
add_filter('woocommerce_stock_amount', 'floatval');

// Add unit price fix when showing the unit price on processed orders
add_filter('woocommerce_order_amount_item_total', 'unit_price_fix', 10, 5);
function unit_price_fix($price, $order, $item, $inc_tax = false, $round = true) {
    $qty = (!empty($item['qty']) && $item['qty'] != 0) ? $item['qty'] : 1;
    if($inc_tax) {
        $price = ($item['line_total'] + $item['line_tax']) / $qty;
    } else {
        $price = $item['line_total'] / $qty;
    }
    $price = $round ? round( $price, 2 ) : $price;
    return $price;
}

Но я хочу, чтобы код влиял только на определенная категория продукта, а не одна.

Итак, я взял приведенный выше код внутри этого кода:

if( is_product_category( 'apple-phones' ) ) {
    //Above code here
}

Но он не работает вообще. Но если я добавлю только первый код, он будет работать нормально для всех продуктов.

Может кто-нибудь помочь мне с тем, что я делаю неправильно?

Я хочу, чтобы вышеуказанный код работал только для одной из моих категорий продуктов.

Спасибо за ваш ответ.

1 Ответ

0 голосов
/ 11 апреля 2020

is_product_category функция работает только на страницах архива. Чтобы достичь того, чего вы хотите, вы можете добавить свои фильтры на страницу архива, обернутую вашим оператором if.

Вы можете использовать код ниже на своей странице архива woocommerce:

if(is_product_category('apple-phones')) {
 add_filter('woocommerce_quantity_input_min', 'min_decimal');
 add_filter('woocommerce_quantity_input_step', 'nsk_allow_decimal');
 // Removes the WooCommerce filter, that is validating the quantity to be an int
 remove_filter('woocommerce_stock_amount', 'intval');
 // Add a filter, that validates the quantity to be a float
 add_filter('woocommerce_stock_amount', 'floatval');
 // Add unit price fix when showing the unit price on processed orders
 add_filter('woocommerce_order_amount_item_total', 'unit_price_fix', 10, 5);
}

И функции. php:

function min_decimal($val) {
    return 0.5;
}
// Add step value to the quantity field (default = 1)
function nsk_allow_decimal($val) {
    return 0.5;
}
function unit_price_fix($price, $order, $item, $inc_tax = false, $round = true) {
    $qty = (!empty($item['qty']) && $item['qty'] != 0) ? $item['qty'] : 1;
    if($inc_tax) {
        $price = ($item['line_total'] + $item['line_tax']) / $qty;
    } else {
        $price = $item['line_total'] / $qty;
    }
    $price = $round ? round( $price, 2 ) : $price;
    return $price;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...