- Statut
- Résolu
- Résolu dans
- 4.0.0
Aperçu de l’anomalie
Avant la version 4.0.0, WPML essayait de faire correspondre la barre oblique finale à l’URL entrante lors de la conversion. Malheureusement, cette logique n’est pas adaptée à tous les cas.
À partir de la version 4.0.0, l’URL convertie correspondra au comportement standard de WordPress, qui est le suivant :
- Lorsqu’il n’y a pas de chemin ni de requête, WPML essaiera de correspondre à l’URL entrante (par ex. http://wpml.com => http://wpml.fr, ou http://wpml.com/ => http://wpml.fr/). Cependant, WordPress génère généralement l’URL d’accueil sans barre oblique finale.
- Lorsqu’il n’y a pas de chemin mais qu’il y a une requête, il y aura toujours une barre oblique finale (par ex. http://wpml.com?foo=bar => http://wpml.fr/?foo=bar).
- Lorsqu’il y a un chemin (et non un fichier), la barre oblique finale dépend du format de permalien.
- Lorsqu’il y a un chemin pointant vers un fichier, aucune barre oblique finale ne doit être ajoutée (quel que soit le format de permalien). Exemple : http://wpml.com/wp-content/uploads/hello.csv.
Solution de contournement
Cette modification peut avoir des effets secondaires inattendus dans les thèmes ou les extensions tierces.
Nous conseillons vivement d’éviter la concaténation de chaînes de texte pour construire des URL et d’utiliser des fonctions telles que :
- add_query_arg pour construire la requête de l’URL.
- http_build_url si cette fonction est disponible sur le serveur (cependant, WPML fournit un polyfill).
- trailingslashit, untrailingslashit pour ajouter ou supprimer les barres obliques de fin.
Par exemple, le code suivant :
$url = get_home_url() . '/' . $path;
Devrait être remplacé par :
$url = trailingslashit( get_home_url() ) . $path;