Sicheres Weiterleiten mit der Funktion wp_safe_redirect()

wordpress-weiterleitung

In der Datei /wp-includes/pluggable.php ist die Funktion wp_redirect() zu finden. Diese kann zwei Argumente aufnehmen, die Zieladresse und der optionale HTTP Status Code.

Mit wp_redirect( 'https://dominikschilling.de/wp-admin/' ) könnte somit ganz einfach zu https://dominikschilling.de/wp-admin/ weitergeleitet werden.

Dank zwei existierenden Filtern kann die Zieladresse sowie der Status Code noch nachträglich geändert werden. So können Adressen vor der Weiterleitung überprüft werden, zum Beispiel um nur lokale Weiterleitungen zu erlauben.

Um diese Arbeit zu vereinfachen, stellt WordPress eine weitere Funktion names wp_safe_redirect() bereit.

Wird nun wp_safe_redirect( 'http://example.de/wp-admin/file.php' ) genutzt, wobei die WordPress Installation unter https://dominikschilling.de/wp-admin/file.php erreichbar ist, wird nicht zu der angegeben Adresse geleitet.
Der Grund dafür ist, dass die Zieladresse nicht im Bereich von home_url() (wäre https://dominikschilling.de/) liegt. Dies wird mittels wp_validate_redirect() geprüft.
Die Funktion wp_validate_redirect() bekommt als zweites Argument admin_url() übermittelt. Wird eine fehlerhafte Zieladresse ermittelt, wird in diesem Fall zum Dashboard weitergeleitet.

Wann lohnt sich nun wp_redirect() und wann wp_safe_redirect()?
Die erste Variante ist für eine Weiterleitung geeignet, wenn der Host der Zieladresse bekannt ist bzw. ihm vertraut werden kann.
Muss hingegen auf den Referrer für eine Weiterleitung gesetzt werden, sollte der Einsatz von wp_safe_redirect() bevorzugt werden.

Bildquelle: GirlieMac / flickr.com, Lizenz: CC BY 2.0.