【发布时间】:2018-10-09 11:15:40
【问题描述】:
我以编程方式在购物车中添加了一个产品,然后想将用户重定向到结帐页面并跳过产品页面和购物车页面。产品添加成功,但它没有进入结帐页面并显示一个没有错误的空白页面。仅当我清除浏览器现金时才会发生这种情况。第二次它工作正常。用户来自产品页面的自定义链接。我希望当用户在产品页面上时,产品应该自动添加并且用户应该被重定向到结帐页面。这是我的代码
add_action('template_redirect','redirect_if_cart_loaded', 10, 2);
function redirect_if_cart_loaded(){
global $woocommerce;
if(is_product() && sizeof( $woocommerce->cart->cart_contents ) == 0){
echo $pooduct_id = get_the_ID();
//check if product already in cart
if ( sizeof( WC()->cart->get_cart() ) > 0 ) {
$woocommerce->cart->empty_cart();
}
// if product not found, add it
WC()->cart->add_to_cart( $pooduct_id );
echo sizeof( WC()->cart->get_cart() ); // this gives 1. means product is added
if ( sizeof( WC()->cart->get_cart() ) > 0 ) {
wp_redirect( WC()->cart->get_checkout_url() );
exit;
}
}
}
【问题讨论】:
-
你使用什么版本的 woocommerce?
-
如果你有一个空白页面,你可以看看你的 apache/ngninx/php 错误日志,你很可能会在某处看到一个 php 致命错误
-
echo WC()->cart->get_checkout_url() 的结果是什么; ?它可能是一个空字符串;你的重定向甚至不会被使用
-
你的开发有什么进展吗?
-
该函数打印结帐页面 url。但是,您的解决方案有效@ced
标签: wordpress woocommerce