Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

вы можете использовать фильтр в 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();
}

Ответ 2

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

Option to redirect visitor to cart page

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

Ответ 3

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

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

Что это. работает на меня. enter image description here

Ответ 4

@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.

Ответ 5

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

Добавьте это в свои функции. php:

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

Ответ 6

На странице магазина, если вы хотите использовать ajax и перенаправить toghether. Второй метод, только когда есть какое-то условие, вы можете использовать этот фильтр и оставить параметр 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;
}

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

Ответ 7

Ни одно из решений, на самом деле не разработанных для меня, фильтр 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 
  }
}