更改 Woocommerce 结帐端点以显示订单摘要详细信息

Posted

技术标签:

【中文标题】更改 Woocommerce 结帐端点以显示订单摘要详细信息【英文标题】:Change Woocommerce checkout end points to show order summary details 【发布时间】:2021-07-05 21:30:51 【问题描述】:

我有一个 woocommerce 网站并使用 PayU 支付系统。截至目前,当客户订单失败时,重定向发生在订单支付端点,当订单成功时,页面重定向到订单接收端点。我需要客户在订单失败和成功订单时重定向到特定的自定义 url,而不是重定向到订单接收端点,我想显示订单摘要详细信息并防止用户重定向到主页。

我在functions.php中尝试了以下

add_action( 'woocommerce_thankyou', 'test_func');

function test_func( $order_id ) 
    $order = wc_get_order( $order_id );
    $url1 = 'https://yoursite.com/custom-url-1';
    $url2 = 'https://yoursite.com/custom-url-2';

    if ( ! $order->has_status( 'failed' ) ) 
        wp_safe_redirect( $url1 );
        exit;
     else 
        wp_safe_redirect( $url2 );
        exit;
    

但它仍然重定向到提到的结帐端点。

我知道它是从高级部分中提到的 woocommerce 结帐端点获取的,但是有人可以帮我找到解决方法吗?

任何帮助将不胜感激。

提前致谢。

【问题讨论】:

这能回答你的问题吗? WooCommerce: Assigning an endpoint to a custom template in my account pages 【参考方案1】:

我已经为您的问题准备了解决方案。我已经测试了你的代码,看起来 woocommerce 改变了一些东西,或者我不知道,这种代码不再工作了。但不用担心。我在互联网上搜索并为您找到了一个很好的解决方案,我已经准备好并在我的临时网站上进行了测试,效果很好。

您需要使用 template_redirect 并将其设置为结帐端点 url(您的情况 - order-received)。然后,您需要使用正确的功能来完成其余的工作,以使其按预期工作。将我的代码放入主题的functions.php文件中,您的问题应该得到解决。不要忘记用您网站的端点url(order-received)更改端点url,然后更改订单失败状态(google.com)和其他状态(yahoo.com)的url

add_action( 'template_redirect', 'wc_thank_you_redirect' );

function wc_thank_you_redirect() 
  if( isset( $_GET['key'] ) && is_wc_endpoint_url( 'order-received' ) )  //change order-received to your endpoint if you will change it in the future
    
    $order_id = wc_get_order_id_by_order_key( $_GET['key'] );
 
    if ( ! empty( $order_id ) ) 
      $order = wc_get_order( $order_id );
      $order_status = $order->get_status();
        
        if ('failed' == $order_status )   //failed order status
          wp_redirect( 'https://google.com' ); //change url here
          exit;
         else 
          wp_redirect( 'https://yahoo.com' ); //change url here for other statuses redirect
          exit;
        
      
    
  

要使用 order-pay 执行此操作,您可以轻松修改我的函数并将端点 URL 更改为 order-pay 并从函数中删除 else。要显示订单摘要,您需要为新 URL 设置模板。也许最好只重定向失败的订单并为您的感谢页面修改现有的 woocommerce 模板。

【讨论】:

没问题 :) 我很惊讶你的代码不再工作了,因为我过去曾在许多网站上实现它,也许有一些更新,但重要的是我们找到了解决方案: ) 很高兴听到它有帮助。 :) 谢谢。我还有一个疑问。有什么方法可以从 woocommerce 订单中删除自动订单备注?我的意思是在付款后创建订单时,如果我们通过仪表板检查 woocommerce 订单,我们可以看到它是自动添加的。我需要删除它。你有什么想法吗? @Vishnu 你可以发布一个关于你下一个问题的新问题,谁知道答案会帮助你:)

以上是关于更改 Woocommerce 结帐端点以显示订单摘要详细信息的主要内容,如果未能解决你的问题,请参考以下文章

更改 Woocommerce 中的结帐订单审查部分

结帐页面上的 Woocommerce 更改结帐总数

WooCommerce 在订单接收端点获取订单 ID 和订单密钥 [重复]

将运输部分移动到 woocommerce 结帐页面的右侧

在 Woocommerce 的管理订单详细信息部分显示自定义结帐字段值

自定义 WooCommerce 日期选择器结帐字段已保存并显示在订单和电子邮件中