Показать wc_add_notice только один раз

у меня есть этот код

add_action( 'woocommerce_add_to_cart_validation', 'custom_add_to_cart_validation', 10, 3 );
function custom_add_to_cart_validation( $passed, $product_id, $quantity) {
    $_product = wc_get_product( $product_id );
    $quantity_total = (array_sum($_POST['quantity']));
    // echo $quantity_total;

    if ($quantity_total % 2 != 0) {
        wc_add_notice( __( 'Multiple of 2 required quantity.', 'woocommerce' ), 'error' );
        $passed = false;
    }
    else{
        $passed = true;
    }var_dump($quantity_total);

    return $passed;
}

У меня есть сгруппированный продукт со многими элементами и для каждого продукта, если условие верно, я получаю это уведомление ... но я хочу отобразить его только один раз. Теперь отображается сообщение об ошибке для каждого входа ... со страницы каждого продукта, я хочу отображать только один раз.


person amarelinha12    schedule 15.05.2017    source источник
comment
используйте wc_clear_notices(); перед wc_add_notice();.   -  person Raunak Gupta    schedule 15.05.2017
comment
@RaunakGupta ты гений! Поместите свое решение в качестве ответа, чтобы дать вам +1.   -  person amarelinha12    schedule 15.05.2017


Ответы (1)


Если вы хотите удалить все предыдущие сообщения, вам нужно использовать wc_clear_notices() перед wc_add_notice().

Итак, ваш код должен выглядеть так:

add_action('woocommerce_add_to_cart_validation', 'custom_add_to_cart_validation', 10, 3);

function custom_add_to_cart_validation($passed, $product_id, $quantity)
{
    //...
    //...
    if ($quantity_total % 2 != 0)
    {
        wc_clear_notices(); //<--- check this line.
        wc_add_notice(__('Multiple of 2 required quantity.', 'woocommerce'), 'error');
        $passed = false;
    }
    //...
    //...
}

Надеюсь это поможет!

person Raunak Gupta    schedule 15.05.2017