- 状态
- 已解决
- 报告针对
- WPML String Translation 2.4.2
- 解决于
- WPML String Translation 2.4.2.1
问题概述
当将 WPML Multilingual & Multicurrency for WooCommerce 3.8.6 与 WPML 3.5.3 一起使用时,在以次要语言下订单后,订单确认页面上会显示(或记录)一些错误。
错误消息类似于以下内容:
PHP Notice: Undefined index: order-received in ../wp-content/plugins/woocommerce-multilingual/inc/class-wcml-endpoints.php on line 155
除了错误消息之外,用户看到的不是包含订单详情的“订单已收到”页面,而是没有任何内容的已翻译“结账”页面。

尽管订单实际上已完成并且已发送通知电子邮件,但客户可能会感到困惑,认为订单未成功提交,从而发送重复的订单。
我们发现这是由 WPML 字符串翻译 2.4.2 中的一项更改引起的。修复程序已经在开发中,但在发布更新之前我们需要对其进行充分测试。
临时解决方法
修复此问题的一种方法是使用 WPML 字符串翻译的 Beta 版 2.4.2.1-b1。它仅解决这个特定问题,不应对其他任何内容产生影响。但是,它是一个 Beta 版,因此建议您谨慎操作:请备份您的站点,最好先在非生产环境中进行测试。
还有另一种可能的临时解决方法,您可以暂时使用,且应该不会对用户体验产生太大影响。此临时解决方法涉及将对应于“order-received”端点的字符串标记为不翻译。您无需删除该字符串,只需取消勾选“翻译已完成”复选框即可。以下是将英语作为默认语言时的步骤。如果您的站点使用不同的默认语言,步骤是相同的。
- 前往 WPML -> 字符串翻译
- 搜索“order-received”或导航至“WooCommerce Endpoints”域并找到“order-received”字符串。
- 展开“order-received”字符串的“翻译”部分
- 取消勾选“翻译已完成”复选框,并为所有语言单击“保存”

完成此操作后,您的“Order Received”页面仍将被翻译。只是 URL 中的端点字符串不会被翻译。