Woocommerce, как нажать кнопку, чтобы добавить в корзину и оформить заказ?

Цель:

Я хотел бы, чтобы покупатель нажимал кнопку, добавлял товар с количеством = 1 в корзину и автоматически направлялся на страницу оформления заказа.

Что я сделал:

Я использую Elementor, чтобы добавить кнопку со значением href:

https://fakeurl.com/checkout/?add-to-cart=59< /а>

Проблема:

Как только я нажму кнопку, она перенаправится на страницу оформления заказа, однако в корзину будет добавлено 2 количества вместо одного.

введите здесь описание изображения

Что я пробовал:

Явно укажите счетчик количества в href:

https://fakeurl.com/checkout?add-to-cart=59&quantity= 1

Но я получаю те же результаты.

Моя страница оформления заказа — это простая страница с двумя шорткодами, а именно woocommerce_cart и woocommerce_checkout:

введите здесь описание изображения

Есть идеи, почему? Нужно ли очищать корзину до того, как будет нажата вышеупомянутая кнопка?


person user1872384    schedule 16.08.2020    source источник
comment
Причина понижения голоса?   -  person user1872384    schedule 16.08.2020
comment
Вы пробовали использовать только один шорткод, а именно [woocommerce_checkout]?   -  person Morten Bak    schedule 19.08.2020


Ответы (3)


Используйте свою структуру ссылок, как вы уже это делали › ?add-to-cart=59&quantity=1 и добавьте приведенный ниже код в functions.php вашей темы, чтобы просто выполнить проверку

единственное, что делает этот кусок кода, - это зацикливает вашу корзину, чтобы увидеть, есть ли этот продукт уже там.. и если это так, он устанавливает $valid var на false

function is_product_in_cart( $valid, $product_id, $quantity) {
    global $woocommerce;
    if($woocommerce->cart->cart_contents_count == 0) return true;
    foreach ( $woocommerce->cart->get_cart() as $key => $values ) {
        $_product = $values['data'];
        $id = $_product->id ;
        if( $product_id == $id )  $valid = false;
    }
    return $valid;
}
add_filter( 'woocommerce_add_to_cart_validation', 'is_product_in_cart', 10, 3 );
person Kresimir Pendic    schedule 19.08.2020

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

  1. Очищайте корзину каждый раз, когда в нее добавляется новый товар, чтобы в корзине оставался только один.
person surendhar153    schedule 22.08.2020

В большинстве случаев количество удваивается, потому что вас перенаправляют. Таким образом, количество добавляется, а после перенаправления количество добавляется снова.

Причин этого может быть несколько.

  1. Настройка постоянных ссылок темы или wordpress добавляет или удаляет // в ссылках
  2. Ваша страница оформления заказа не указана в настройках woocommerce (woocommerce-›дополнительные настройки-›Настройки страницы)

Как проверить, перенаправляются ли вы (chrome)
В верхней части инспектора Chrome (на вкладке «Сеть») есть флажок «Сохранить журнал». Включите эту опцию. Теперь совершенно не имеет значения, как перемещается страница, инспектор будет хранить всю историю журнала, включая ответ на перенаправление. (найдено здесь: См. полный путь перенаправления и код состояния HTTP в Chrome)

Возможные решения

  1. «Включить AJAX кнопки добавления в корзину в архивах» (WooCommerce -> Настройки -> Продукты -> Общие), найденные здесь (https://www.businessbloomer.com/woocommerce-custom-add-cart-urls-Ultimate-guide/)
    Иногда это помогает при наличии пользовательского страницы для корзины и оформления заказа.
  2. Отключите перенаправление на страницу корзины после успешного добавления в WooCommerce › Настройки › Товары.
    Поскольку вы ссылаетесь на страницу оформления заказа, это снова перенаправит вас на страницу корзины.
person Pepijn Kosman    schedule 25.08.2020