Условно изменить цены на несколько конкретных продуктов в Woocommerce

Я использую код отсюда: Условно изменить конкретную цену продукта в Woocommerce увеличить цену определенного продукта на 10 долларов, за исключением страниц товаров из определенной категории и если в корзине есть что-либо из этой категории.

Однако теперь у меня есть более одного продукта, на который мне нужно увеличить цену. Я попытался изменить строку 7:

if( $product->get_id() != 87 ) return $price_html;

к чему-то вроде

if( $product->get_id() != 87 || $product->get_id() != 2799 ) return $price_html;

для продукта 87 или 2799, но это просто ломает код, и даже продукт 87 больше не отображается как на 10 долларов больше. Я пробовал варианты || и или но ничего, что я делаю, не работает.

Помощь очень ценится :)


person Rose Thorn    schedule 13.09.2018    source источник
comment
Фрагмент кода выше выглядит хорошо. Может еще что-то влияет. Можете ли вы поделиться всем блоком кода, чтобы мы могли его отладить?   -  person Dhaval Shah    schedule 13.09.2018


Ответы (2)


Для нескольких идентификаторов продуктов вместо использования чего-то вроде:

add_filter( 'some_hook', 'some_function' );
function some_function( $price_html, $product ){
    if( $product->get_id() != 87 || $product->get_id() != 2799 ) return $price_html;

    // The function code 

    return $price_html; // at the end
}

Вы будете использовать что-то вроде:

add_filter( 'some_hook', 'some_function' );
function some_function( $price_html, $product ){
    if( in_array( $product->get_id(), array( 87, 2799 ) ) ){

        // The function code 

    }

    return $price_html; // at the end
}

И это будет работать для множества нескольких продуктов

person LoicTheAztec    schedule 13.09.2018
comment
Спасибо! Изменение строки 7 на if( ! in_array( $product->get_id(), array( 87, 2799 ) ) ) return $price_html; // Exit отлично работает! - person Rose Thorn; 14.09.2018

Ваше условие if не имеет смысла, поскольку оно всегда возвращает значение true. Попробуйте заменить или на и:

if( $product->get_id() != 87 && $product->get_id() != 2799 ) return $price_html;
person Ivnhal    schedule 13.09.2018
comment
Спасибо @IvnH. Мои сильные стороны в кодировании лежат за пределами PHP, поэтому мне пришлось довольно долго учиться, чтобы понять логику. Я уже понял разницу :) - person Rose Thorn; 14.09.2018