- Status
- Gelöst
- Gelöst in
- 4.0.0
Übersicht über das Problem
Vor 4.0.0 versuchte WPML bei der Konvertierung, den abschließenden Schrägstrich an die eingehende URL anzupassen. Leider ist diese Logik nicht für alle Fälle geeignet.
Ab 4.0.0 entspricht die konvertierte URL dem Standardverhalten von WordPress, das wie folgt aussieht:
- Wenn es keinen Pfad und keinen Query-String gibt, versucht WPML, sich an die eingehende URL anzupassen (z. B. http://wpml.com => http://wpml.fr, oder http://wpml.com/ => http://wpml.fr/). WordPress gibt die Startseiten-URL jedoch normalerweise ohne abschließenden Schrägstrich aus.
- Wenn es keinen Pfad, aber einen Query-String gibt, haben wir immer einen abschließenden Schrägstrich (z. B. http://wpml.com?foo=bar => http://wpml.fr/?foo=bar).
- Wenn wir einen Pfad haben (keine Datei), hängt der abschließende Schrägstrich vom Permalink-Format ab.
- Wenn wir einen Pfad haben, der auf eine Datei verweist, sollte kein abschließender Schrägstrich hinzugefügt werden (unabhängig vom Permalink-Format). Beispiel: http://wpml.com/wp-content/uploads/hello.csv.
Problemumgehung
Diese Änderung kann einige unerwartete Nebenwirkungen in Themes oder Drittanbieter-Plugins haben.
Wir raten dringend dazu, String-Verkettung zum Erstellen von URLs zu vermeiden und stattdessen Funktionen wie die folgenden zu nutzen:
- add_query_arg, um die URL-Abfrage zu erstellen.
- http_build_url, falls diese Funktion auf dem Server verfügbar ist (WPML stellt jedoch ein Polyfill bereit).
- trailingslashit, untrailingslashit, um abschließende Schrägstriche hinzuzufügen oder zu entfernen.
Zum Beispiel der folgende Code:
$url = get_home_url() . '/' . $path;
Sollte ersetzt werden durch:
$url = trailingslashit( get_home_url() ) . $path;