Wordpress. WooCommerce. Крючок для упражнений ДО добавление в корзину - программирование
Подтвердить что ты не робот

Wordpress. WooCommerce. Крючок для упражнений ДО добавление в корзину

Что мне нужно сделать: Я хочу запустить некоторые проверки продукта перед добавлением в корзину. Точнее: Я хочу сравнить продукт, который я собираюсь добавить в корзину, с уже добавленными, чтобы увидеть, есть ли какие-то конфликты. Пример: Скажем, у нас есть продукт под названием "Обе ботинки" и продукт "левая обувь". Пользователь добавляет "левую обувь" в корзину. Затем он добавляет "обе ботинки". Я хочу напечатать ошибку вместо добавления "обеих туфель": Извините, но вы не можете добавить обе ботинки, если вы добавили левую обувь в корзину. Если вы хотите купить "обе ботинки", сначала удалите "левый ботинок".

Я посмотрел на class-wc-cart.php, и я нашел крюк действия в строке 811, , но это слишком поздно! Он после добавления продукта

"do_action ('woocommerce_add_to_cart', $cart_item_key, $product_id, $quantity, $variant_id, $variant, $cart_item_data);

Метод add_to_cart начинается с строки 705. http://wcdocs.woothemes.com/apidocs/source-class-WC_Cart.html#705

Как моя функция "менеджер конфликтов продукта" будет подключена до строки 801, без взлома woocommerce?

Спасибо!

4b9b3361

Ответ 1

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

function so_validate_add_cart_item( $passed, $product_id, $quantity, $variation_id = '', $variations= '' ) {

    // do your validation, if not met switch $passed to false
    if ( 1 != 2 ){
        $passed = false;
        wc_add_notice( __( 'You can not do that', 'textdomain' ), 'error' );
    }
    return $passed;

}
add_filter( 'woocommerce_add_to_cart_validation', 'so_validate_add_cart_item', 10, 5 );