- Estado
- Resuelto
- Resuelto en
- 4.0.0
Resumen del problema
Antes de 4.0.0, WPML intentaba que la barra final coincidiera con la URL entrante durante la conversión. Lamentablemente, esta lógica no se adapta a todos los casos.
A partir de 4.0.0, la URL convertida coincidirá con el comportamiento estándar de WordPress, que es el siguiente:
- Cuando no hay ruta ni consulta, WPML intentará coincidir con la URL entrante (p. ej. http://wpml.com => http://wpml.fr, o http://wpml.com/ => http://wpml.fr/). Sin embargo, WordPress generalmente devuelve la URL de inicio sin ninguna barra final.
- Cuando no hay ruta pero hay una consulta, siempre tendremos una barra final (p. ej. http://wpml.com?foo=bar => http://wpml.fr/?foo=bar).
- Cuando tenemos una ruta (no un archivo), la barra final depende del formato del enlace permanente.
- Cuando tenemos una ruta que apunta a un archivo, no se debe añadir ninguna barra final (independientemente del formato del enlace permanente). Ejemplo: http://wpml.com/wp-content/uploads/hello.csv.
Solución alternativa
Este cambio puede tener algunos efectos secundarios inesperados en temas o plugins de terceros.
Recomendamos encarecidamente evitar la concatenación de cadenas para crear URL y utilizar funciones como:
- add_query_arg para crear la consulta de la URL.
- http_build_url si esta función está disponible en el servidor (sin embargo, WPML proporciona un polyfill).
- trailingslashit, untrailingslashit para añadir o eliminar las barras finales.
Por ejemplo, el siguiente código:
$url = get_home_url() . '/' . $path;
Debe reemplazarse por:
$url = trailingslashit( get_home_url() ) . $path;