Wenn du mit WordPress arbeitest, sind dir sicher schon Funktionen zur Übersetzung von Inhalten begegnet, insbesondere wenn es um Internationalisierung geht. Dabei ist es nicht nur wichtig, dass Texte richtig übersetzt werden, sondern auch, dass sie sicher ausgegeben werden, um Sicherheitslücken wie Cross-Site Scripting (XSS) zu vermeiden. In diesem Artikel zeige ich dir die Unterschiede zwischen den drei wichtigsten WordPress-Funktionen in diesem Bereich: esc_attr_e(), esc_html_e() und esc_html__().
Warum Escaping in WordPress wichtig ist
Bevor wir uns die einzelnen Funktionen genauer ansehen, lass uns kurz das Konzept des „Escapens“ klären. Beim Escapen werden Zeichen, die in HTML oder anderen Auszeichnungssprachen eine spezielle Bedeutung haben (wie <, >, “), so umgewandelt, dass sie als einfache Textzeichen behandelt werden. Dies ist besonders wichtig, um potenziell gefährlichen Code zu verhindern und die Integrität deiner Website zu schützen.
esc_attr_e(): Sicher für HTML-Attribute
Die Funktion esc_attr_e() wird verwendet, um einen übersetzten String in einem HTML-Attribut sicher auszugeben. Das bedeutet, dass sie dafür sorgt, dass Zeichen wie Anführungszeichen korrekt escapet werden, wenn sie z.B. in title-, value– oder alt-Attributen verwendet werden.
Beispiel:
<input type="text" value="<?php esc_attr_e( 'Ihr Name', 'text-domain' ); ?>">
In diesem Beispiel wird der Text „Ihr Name“ sicher in das value-Attribut eines Input-Feldes eingefügt, und gleichzeitig wird er in die Sprache des Benutzers übersetzt, sofern eine Übersetzung für den angegebenen Text vorhanden ist.
esc_html_e(): Sicher für HTML-Inhalte
Die Funktion esc_html_e() ist ähnlich, wird jedoch für HTML-Inhalte verwendet. Sie stellt sicher, dass Zeichen, die in HTML eine spezielle Bedeutung haben (wie <, > und &), sicher escapet werden, damit sie den HTML-Code nicht zerstören oder versehentlich schädlichen Code einfügen.
Beispiel:
<p><?php esc_html_e( 'Hallo, Welt!', 'text-domain' ); ?></p>
Hier wird der Text „Hallo, Welt!“ sicher innerhalb eines Absatzes ausgegeben und dabei auch in die Sprache des Benutzers übersetzt.
esc_html__(): Sicher, aber ohne direkte Ausgabe
Die Funktion esc_html__() arbeitet ähnlich wie esc_html_e(), aber mit einem entscheidenden Unterschied: Sie gibt den übersetzten und escapeten String nicht automatisch aus, sondern gibt ihn nur zurück. Das ist nützlich, wenn du den Text in einer Variable speichern oder ihn weiter bearbeiten möchtest, bevor du ihn ausgibst.
Beispiel:
$sicherer_text = esc_html__( 'Hallo, Welt!', 'text-domain' ); echo '<p>' . $sicherer_text . '</p>';
In diesem Fall wird der Text erst in einer Variable gespeichert, bevor er im HTML-Code ausgegeben wird.
Wann du welche Funktion verwenden solltest
- Verwende esc_attr_e(), wenn du eine übersetzte und sichere Ausgabe in einem HTML-Attribut (wie title, alt, value usw.) benötigst.
- Verwende esc_html_e(), wenn du eine übersetzte und sichere Ausgabe innerhalb von HTML-Inhalten (z.B. in einem Absatz, einer Überschrift usw.) benötigst.
- Verwende esc_html__(), wenn du die übersetzte und escapete Zeichenkette zuerst in einer Variablen speichern möchtest, um sie später auszugeben oder weiter zu verarbeiten.
Fazit
Das Escapen von Ausgaben ist in WordPress unverzichtbar, um die Sicherheit deiner Website zu gewährleisten und Angriffe durch Cross-Site-Scripting zu verhindern. Gleichzeitig sorgen die hier beschriebenen Funktionen dafür, dass deine Inhalte auch für eine internationale Zielgruppe leicht übersetzbar sind. Mit den Funktionen esc_attr_e(), esc_html_e() und esc_html__() kannst du sicherstellen, dass deine Übersetzungen sowohl korrekt als auch sicher in deinem HTML ausgegeben werden.