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