Проблема с перенаправлением на кнопку «добавить в корзину» woocommerce для оформления заказа - PullRequest
1 голос
/ 11 декабря 2019

Привет У меня есть проблема, похожая на

Как удалить добавленные элементы корзины woocommerce и перенаправить к оформлению заказа?

На странице продукта Когда я нажимаю добавить в корзинуЯ всегда получаю эту ошибку «Вы не можете добавить еще один [Продукт] в корзину woocommerce»

Я попробовал решение, опубликованное LoicTheAztec

1) Пустая корзина перед добавлением в корзину (если корзинане является пустым)

add_filter( 'woocommerce_add_to_cart_validation', 'one_cart_item_at_the_time', 10, 3 );
function one_cart_item_at_the_time( $passed, $product_id, $quantity ) {
    if( ! WC()->cart->is_empty())
        WC()->cart->empty_cart();
    return $passed;
}

2) Перенаправление добавления в корзину на оформление заказа:

add_filter( 'woocommerce_add_to_cart_redirect', 'add_to_cart_checkout_redirection', 10, 1 );
function add_to_cart_checkout_redirection( $url ) {
    return wc_get_checkout_url();
}

3) Пропустить страницу корзины, перенаправив на оформление заказа:

add_action('template_redirect', 'skip_cart_page_redirection_to_checkout');
function skip_cart_page_redirection_to_checkout() {
    if( is_cart() )
        wp_redirect( wc_get_checkout_url() );
}

Это решение работает и решает мою проблему, но первый фрагмент удаляет все другие продукты, которые у меня уже есть в корзине, я должен только сбросить текущий продукт, а не всю корзину. Как я могу решить проблему?

1 Ответ

0 голосов
/ 11 декабря 2019

Попробуйте этот код в первом фрагменте, он проверит наличие товара в корзине и затем перенаправит, если найден здесь :

add_filter('woocommerce_add_to_cart_validation', 'one_cart_item_at_the_time', 10, 3);

function one_cart_item_at_the_time( $passed, $product_id, $quantity ) {
    if(! WC()->cart->is_empty()) {
        $cartId = WC()->cart->generate_cart_id($product_id);
        $cartItemKey = WC()->cart->find_product_in_cart($cartId);
        if ($cartItemKey) {
          return $passed;
        } else {
          $woocommerce->cart->add_to_cart( $product_id );
          return $passed;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...