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


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

Author: Michael Villeneuve, 2013-03-24

7 answers

Вы можете использовать фильтр в 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
Author: Ewout, 2015-03-12 18:22:45

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

Option to redirect visitor to cart page

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

 11
Author: Devin Walker, 2013-03-24 00:39:51

Я нашел простое решение, которое работает как по волшебству.

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

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

 9
Author: Shir Gans, 2014-07-30 14:31:12

@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
Author: ATutorMe, 2014-06-19 13:46:32

Фильтр 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
Author: Christian Lescuyer, 2016-08-31 10:29:16

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

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

Для удаления атрибута класса ajax_add_to_cart и изменения значения href на страницу URL-адреса для проверки;

В моем случае шаблона:

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
Author: jedi, 2016-10-12 15:40:53

Ни одно из решений на самом деле не сработало для меня, фильтр 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
Author: nikksan, 2017-03-23 08:00:55