Woocommerce скидка для одной категории - PullRequest
0 голосов
/ 15 февраля 2019

Хочу добавить скидку на все товары в категории.Я попробовал эту функцию здесь:

add_filter( 'woocommerce_get_price', 'custom_price_sale', 10, 2 );
function custom_price_sale( $price, $product ) {
if ( has_term( 'promocje-i-outlet', 'product_cat' ) ) {
   $price = $price * ( 1 - 0.25 );
}
return $price;
}

Когда я использую только это без if():

$price = $price * ( 1 - 0.25 );

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

Я также пытался использовать это здесь:

get_the_terms( $product->ID, 'product_cat' );

Затем создайте массив категорий и используйте это:

if ( in_array( 'promocje-i-outlet', $kategoria ) ) {
    $price = $price * ( 1 - 0.25 );
}

Но эффект тот же - динамическое ценообразование не работает, и я получаю это предупреждение:

Предупреждение: in_array () ожидает, что параметр 2 будет массивом, значение NULL

Что я делаю не так?

1 Ответ

0 голосов
/ 15 февраля 2019

Я не уверен на 100%, но это не может работать, потому что это внутри функции, которая перебирает все продукты во время сборки страницы.Функция has_term не может работать здесь, потому что она работает, только когда вы находитесь на определенной странице отдельного продукта.

Попробуйте вместо этого здесь:

add_filter( 'woocommerce_product_get_price', 'custom_sale_price_for_category', 10, 2 );
function custom_sale_price_for_category( $price, $product ) {

    //Get all product categories for the current product
    $terms = wp_get_post_terms( $product->get_id(), 'product_cat' );
    foreach ( $terms as $term ) {
        $categories[] = $term->slug;
    }

    if ( ! empty( $categories ) && in_array( 'promocje-i-outlet', $categories, true ) ) {
        $price *= ( 1 - 0.25 );
    }

    return $price;
}

Пожалуйста, сообщите мне, еслиэто работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...