Кнопка Woocommerce добавить в корзину перенаправить на оформление заказа
Я создал электронную коммерцию с помощью плагина woocommerce. Я продаю только подписку, поэтому страница "/корзина/" бесполезна. Я пытаюсь избавиться от этого, чтобы, когда мой клиент нажимает кнопку "Добавить в корзину", он попадал на страницу оформления заказа.
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();
}
В настройках WooCommerce есть опция, которая позволяет включить эту функцию:
Просто войдите в свою панель администратора WP > WooCommerce > Каталог и выберите нужный вариант. Я надеюсь, что это поможет!
Я нашел простое решение, которое работает как по волшебству.
- Как упоминалось @Ewout, установите флажок с надписью "Перенаправление на страницу корзины после успешного добавления".
- Woocommerce > Настройки > Оформление заказа (Вкладка) - где вы должны выбрать страницы для корзины и оформления заказа, выберите страницу оформления заказа в качестве страницы корзины (прилагаемое изображение).
Вот и все. работает на меня.
@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.
Фильтр 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();
} );
На странице магазина, если вы хотите использовать 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;
}
Я надеюсь, что это поможет.
Ни одно из решений на самом деле не сработало для меня, фильтр 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
}
}