- Trạng thái
- Đã giải quyết
- Đã giải quyết trong
- 4.0.0
Tổng quan về lỗi
Trước phiên bản 4.0.0, WPML đã cố gắng làm cho dấu gạch chéo ở cuối khớp với URL đầu vào trong quá trình chuyển đổi. Đáng tiếc là logic này không phù hợp cho tất cả các trường hợp.
Bắt đầu từ phiên bản 4.0.0, URL được chuyển đổi sẽ khớp với hành vi tiêu chuẩn của WordPress như sau:
- Khi không có đường dẫn và không có truy vấn, WPML sẽ cố gắng khớp với URL đầu vào (ví dụ: http://wpml.com => http://wpml.fr, hoặc http://wpml.com/ => http://wpml.fr/). Tuy nhiên, WordPress thường xuất URL trang chủ mà không có bất kỳ dấu gạch chéo nào ở cuối.
- Khi không có đường dẫn nhưng có truy vấn, sẽ luôn có một dấu gạch chéo ở cuối (ví dụ: http://wpml.com?foo=bar => http://wpml.fr/?foo=bar).
- Khi có một đường dẫn (không phải là tệp), dấu gạch chéo ở cuối phụ thuộc vào định dạng đường dẫn tĩnh.
- Khi có một đường dẫn trỏ đến tệp, sẽ không thêm dấu gạch chéo ở cuối (bất kể định dạng đường dẫn tĩnh). Ví dụ: http://wpml.com/wp-content/uploads/hello.csv.
Giải pháp tạm thời
Thay đổi này có thể gây ra một số tác động không mong muốn trong các giao diện hoặc plugin của bên thứ ba.
Chúng tôi đặc biệt khuyên bạn nên tránh nối chuỗi để tạo URL và hãy sử dụng các hàm như:
- add_query_arg để tạo truy vấn URL.
- http_build_url nếu hàm này khả dụng trên máy chủ (tuy nhiên WPML có cung cấp một polyfill).
- trailingslashit, untrailingslashit để thêm hoặc xóa dấu gạch chéo ở cuối.
Ví dụ, đoạn mã sau:
$url = get_home_url() . '/' . $path;
Nên được thay thế bằng:
$url = trailingslashit( get_home_url() ) . $path;