更改 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 在订单接收端点获取订单 ID 和订单密钥 [重复]