- Stato
- Risolto
- Risolto in
- 4.0.0
Panoramica del problema
Prima della versione 4.0.0, WPML tentava di far corrispondere lo slash finale all’URL in entrata durante la conversione. Purtroppo, questa logica non è adatta a tutti i casi.
A partire dalla versione 4.0.0, l’URL convertito corrisponderà al comportamento standard di WordPress, che è il seguente:
- Quando non c’è alcun percorso e nessuna query, WPML cercherà di far corrispondere l’URL in entrata (ad es. http://wpml.com => http://wpml.fr, o http://wpml.com/ => http://wpml.fr/). Tuttavia, WordPress di solito restituisce l’URL della home senza alcuno slash finale.
- Quando non c’è un percorso ma c’è una query, avremo sempre uno slash finale (ad es. http://wpml.com?foo=bar => http://wpml.fr/?foo=bar).
- Quando abbiamo un percorso (non un file), lo slash finale dipende dal formato del permalink.
- Quando abbiamo un percorso che punta a un file, non deve essere aggiunto alcuno slash finale (indipendentemente dal formato del permalink). Esempio: http://wpml.com/wp-content/uploads/hello.csv.
Soluzione alternativa
Questa modifica può avere effetti collaterali imprevisti nei temi o nei plugin di terze parti.
Consigliamo vivamente di evitare la concatenazione di stringhe per costruire gli URL e di utilizzare funzioni come:
- add_query_arg per costruire la query dell’URL.
- http_build_url se questa funzione è disponibile sul server (tuttavia WPML fornisce un polyfill).
- trailingslashit, untrailingslashit per aggiungere o rimuovere gli slash finali.
Ad esempio, il seguente codice:
$url = get_home_url() . '/' . $path;
Dovrebbe essere sostituito con:
$url = trailingslashit( get_home_url() ) . $path;