- Trạng thái
- Đã giải quyết
- Được báo cáo cho
- WPML String Translation 2.4.2
- Đã giải quyết trong
- WPML String Translation 2.4.2.1
Tổng quan về lỗi
Khi sử dụng WPML Multilingual & Multicurrency for WooCommerce 3.8.6 với WPML 3.5.3, một số lỗi được hiển thị (hoặc được ghi lại) trên trang xác nhận đơn hàng, sau khi đặt hàng bằng một ngôn ngữ phụ.
Thông báo lỗi tương tự như bên dưới:
PHP Notice: Undefined index: order-received in ../wp-content/plugins/woocommerce-multilingual/inc/class-wcml-endpoints.php on line 155
Ngoài thông báo lỗi, thay vì trang ‘Đã nhận đơn hàng’ với chi tiết đơn hàng, người dùng lại thấy trang ‘Thanh toán’ đã được dịch nhưng không có nội dung nào.

Mặc dù các đơn hàng vẫn được xử lý và email thông báo vẫn được gửi, khách hàng có thể bị bối rối và nghĩ rằng đơn hàng chưa được thực hiện thành công, từ đó gửi các đơn hàng trùng lặp.
Chúng tôi phát hiện ra rằng vấn đề này xuất phát từ một thay đổi trong WPML Dịch Chuỗi 2.4.2. Một bản sửa lỗi đang được tiến hành nhưng chúng tôi cần kiểm tra kỹ lưỡng trước khi phát hành bản cập nhật.
Giải pháp tạm thời
Một cách để khắc phục điều này là sử dụng bản beta 2.4.2.1-b1 cho WPML Dịch Chuỗi. Bản cập nhật này chỉ giải quyết sự cố cụ thể này và sẽ không ảnh hưởng đến bất kỳ điều gì khác. Tuy nhiên, vì đây là bản beta nên bạn cần cẩn trọng: hãy sao lưu trang web của bạn và tốt nhất nên thử nghiệm trước trên môi trường không phải là trang web chính thức.
Có một giải pháp tạm thời khác mà bạn có thể sử dụng và nó sẽ không ảnh hưởng quá nhiều đến trải nghiệm người dùng. Giải pháp tạm thời này yêu cầu đánh dấu chuỗi tương ứng với endpoint ‘order-received’ là không dịch. Bạn không cần phải xóa chuỗi này mà chỉ cần bỏ chọn hộp kiểm ‘Bản dịch đã hoàn thành’. Dưới đây là các bước cho trường hợp bạn có tiếng Anh là ngôn ngữ mặc định. Các bước hoàn toàn giống nhau nếu trang web của bạn sử dụng một ngôn ngữ mặc định khác.
- Đi tới WPML -> Dịch chuỗi
- Tìm kiếm ‘order-received’ hoặc điều hướng đến miền ‘WooCommerce Endpoints’ và tìm chuỗi ‘order-received’.
- Mở rộng phần ‘bản dịch’ cho chuỗi ‘order-received’
- Bỏ chọn hộp kiểm ‘Bản dịch đã hoàn thành’ và nhấp vào ‘Lưu’ cho tất cả ngôn ngữ

Sau bước này, trang ‘Order Received’ của bạn vẫn sẽ được dịch. Chỉ là chuỗi endpoint trong URL sẽ không được dịch.