【问题标题】:woocommerce redirect to checkout is not workingwoocommerce重定向到结帐不起作用
【发布时间】: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


【解决方案1】:

使用

if ( !function_exists( 'wc_get_checkout_url' ) ) { 
    require_once '/includes/wc-core-functions.php'; 
} 

$result = wc_get_checkout_url(); 

使用 wc_get_checkout_url 代替 get_checkout_url,因为 get_checkout_url 已被弃用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    • 2023-04-04
    • 2013-03-13
    • 2018-07-06
    相关资源
    最近更新 更多