Я создал электронную коммерцию, используя плагин woocommerce. Я продаю только подписку, поэтому страница «/ cart /» бесполезна. Я пытаюсь избавиться от него, чтобы, когда мой клиент нажал кнопку «Добавить в корзину», он попадает на страницу проверки.
вы можете использовать фильтр в 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> Catalog и выберите опцию. Надеюсь, это поможет!
Я нашел простое решение, которое работает как магия.
Вот и все. работает на меня.
@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 .
Добавьте это в свои функции. Php:
add_filter ('woocommerce_add_to_cart_redirect', function() { return WC()->cart->get_checkout_url(); } );
На странице магазина, если вы хотите использовать 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- ajax_add_to_cart
для проверки;
В моем случае шаблона:
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 } }