【发布时间】:2013-03-13 15:00:36
【问题描述】:
我使用插件 woocommerce 创建了一个电子商务。我只出售订阅,所以“/cart/”页面没用。我试图摆脱它,以便当我的客户点击“添加到购物车”按钮时,他最终会进入结帐页面。
【问题讨论】:
标签: php wordpress woocommerce
我使用插件 woocommerce 创建了一个电子商务。我只出售订阅,所以“/cart/”页面没用。我试图摆脱它,以便当我的客户点击“添加到购物车”按钮时,他最终会进入结帐页面。
【问题讨论】:
标签: php wordpress woocommerce
在 WooCommerce 3.6 或更高版本中,您可以使用woocommerce_add_to_cart_redirect(道具@roman)
add_filter ('woocommerce_add_to_cart_redirect', function( $url, $adding_to_cart ) {
return wc_get_checkout_url();
}, 10, 2 );
原答案:
你可以在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 > 目录并选择该选项。我希望这会有所帮助!
【讨论】:
我找到了一个像魔术一样工作的简单解决方案。
就是这样。为我工作。
【讨论】:
第 1 步。 首先转到 WooCommerce 产品设置并停用 AJAX 添加到购物车。
第 2 步。
使用woocommerce_add_to_cart_redirect 钩子重定向到结帐。
add_filter( 'woocommerce_add_to_cart_redirect', function( $url ) {
return wc_get_checkout_url();
});
当然还有一些小事情要做,例如更改添加到购物车按钮文本和删除一些与 WooCommerce 购物车相关的通知。我建议查看本教程以获取更多信息https://rudrastyh.com/woocommerce/redirect-to-checkout-skip-cart.html
【讨论】:
@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”将替换为您的产品 ID。
这对我来说很有用,可以消除不必要的步骤,让用户直接从主页和其他非 woocommerce 页面/帖子结帐。
【讨论】:
add_to_cart_redirect 现在已弃用,请改用woocommerce_add_to_cart_redirect。
过滤器 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
}
}
【讨论】:
在主题 function.php 文件中尝试以下代码
add_filter( 'woocommerce_add_to_cart_redirect', 'woo_skip_cart_redirect_checkout' );
function woo_skip_cart_redirect_checkout( $url ) {
return wc_get_checkout_url();
}
【讨论】: