it-swarm.com.ru

Woocommerce добавить в корзину кнопку перенаправить к оформлению заказа

Я создал электронную торговлю с помощью плагина woocommerce. Я продаю только подписку, поэтому страница "/ cart /" бесполезна. Я пытаюсь избавиться от этого, чтобы, когда мой клиент нажал кнопку «Добавить в корзину», он оказался на странице оформления заказа.

24
Michael Villeneuve

вы можете использовать фильтр в functions.php:

add_filter ('add_to_cart_redirect', 'redirect_to_checkout');

function redirect_to_checkout() {
    global $woocommerce;
    $checkout_url = $woocommerce->cart->get_checkout_url();
    return $checkout_url;
}

кажется, что он не работает с ajax, но он работает со страниц одного продукта, который я думаю, что вы используете

В последних версиях WooCommerce (> = 2.1) функция может быть упрощена как:

function redirect_to_checkout() {
    return WC()->cart->get_checkout_url();
}
62
Ewout

В настройках WooCommerce есть опция, позволяющая включить эту функцию:

Option to redirect visitor to cart page

Просто войдите в свою WP панель администратора> WooCommerce> Каталог и выберите опцию. Надеюсь, это поможет!

11
Devin Walker

Я нашел простое решение, которое работает как магия.

  1. Как упомянуто @Ewout, установите флажок «Перенаправить на страницу корзины после успешного добавления».
  2. Woocommerce> Настройки> Оформить заказ (вкладка) - где вы должны выбрать страницы для корзины и оформления заказа, выберите страницу оформления заказа в качестве страницы корзины (изображение прилагается).

Вот и все. работает для меня.enter image description here

10
Shir Gans

@RemiCorson опубликовал это краткое, но полезное руководство:

http://www.remicorson.com/woocommerce-skip-product-cart-pages/

Он упоминает тот же фильтр, что и @Ewout выше,

add_filter ('add_to_cart_redirect', 'redirect_to_checkout');

function redirect_to_checkout() {
    global $woocommerce;
    $checkout_url = $woocommerce->cart->get_checkout_url();
    return $checkout_url;

}

но одна строка кода выделяется и имеет большое значение для моего текущего проекта woocommerce:

Существует прямая ссылка, которую пользователь может использовать для автоматического обхода страницы продукта . http://your-site.com/?add-to-cart=37

«37» будет заменено вашим идентификатором продукта.

Это было полезно для меня, чтобы исключить ненужные шаги и направить пользователей непосредственно к оформлению заказа с домашней страницы и других страниц/постов, не связанных с woocommerce.

3
ATutorMe

Фильтр add_to_cart_redirect устарел в WooCommerce 2.6. Вместо этого используйте woocommerce_add_to_cart_redirect.

Добавьте это в ваши functions.php:

add_filter ('woocommerce_add_to_cart_redirect', function() {
  return WC()->cart->get_checkout_url();
} );
1
Christian Lescuyer

Обновление для WooCommerce 3.5.1

Шаг 1 . Прежде всего, перейдите в настройки продуктов WooCommerce и деактивируйте AJAX добавление в корзину.

Шаг 2. Используйте woocommerce_add_to_cart_redirect ловушку, чтобы перенаправить к оформлению заказа. 

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

Конечно, осталось сделать несколько небольших вещей, таких как изменение текста кнопок «добавить в корзину» и удаление некоторых уведомлений, связанных с корзиной WooCommerce. Я рекомендую проверить этот учебник для более https://rudrastyh.com/woocommerce/redirect-to-checkout-skip-cart.html

0
Misha Rudrastyh

Ни одно из решений на самом деле не сработало для меня, фильтр add_to_cart_redirect срабатывал на каждой странице, а не только в корзине. Я внес некоторые изменения в предложенный ответ.

add_filter ('add_to_cart_redirect', 'redirect_to_checkout');
  function redirect_to_checkout() {
  if(is_cart()){
    $checkout_url = WC()->cart->get_checkout_url();
  ?>
  <script>
  location = '<?=$checkout_url?>';
  </script>
  <?php 
  }
}
0
nikksan

На странице магазина, если вы хотите использовать ajax и перенаправить вместе. Второй метод только при наличии каких-либо условий, вы можете использовать этот фильтр и оставить в настройках Woocommerce ajax включенным:

add_filter('woocommerce_loop_add_to_cart_link', array( $this, 'add_quantity_input' ), 4, 2); 

удалить по атрибуту класса ajax_add_to_cart и изменить значение href на страницу ссылки оформления заказа;

На моем шаблоне дела:

public function add_quantity_input($text = null, $product = null) {
    global $product, $woocommerce;

    if ( $text != null and $product != null  ) {
        if(ismycondition($product->id)) {
            $s = explode('class="', $text);
            $s[2]=str_replace('ajax_add_to_cart', '', $s[2]);
            $text = implode('class="', $s);

            $text = preg_replace('/<a(.*)href="([^"]*)"(.*)>/','<a$1href="'.$woocommerce->cart->get_checkout_url().'"$3>', $text);
        }
    }

    return $text;
}

Я надеюсь, что это поможет.

0
jedi