Select Page

Übersetzbare PHP Funktionen für WordPress schreiben

escaping, sanitizing und text-domains > Mehrsprachige Themes & Plugins programmieren!

Hier finden Sie nützliche PHP Snippets, um Texte übersetzbar in WordPress ausgeben zu lassen und mehrsprachige Themes und Plugins für WordPress zu realisieren.

Dieser Artikel wurde zuletzt am 21. November 2023 aktualisiert.

info
Geschrieben von Saskia Teichmann
am 21. März 2023
Code Snippets - PHP - WordPress

Auszug aus dem WordPress Entwickler-Handbuch:

Unter Escaping Output versteht man die Absicherung von Ausgabedaten, indem unerwünschte Daten / Zeichen, wie z. B. fehlerhafte HTML- oder Skript-Tags, entfernt werden. Dieser Mechanismus trägt dazu bei, dass die Daten vor dem Rendern für den Endbenutzer abgesichert werden.

WordPress enthält zahlreiche Hilfsfunktionen, die Sie für die gängigsten Szenarien einsetzen können.

Achten Sie genau darauf, was die einzelnen Funktionen tun, denn einige entfernen HTML, während andere es zulassen. Sie sollten die am besten geeignete Funktion für den Inhalt und den Kontext verwenden, den Sie ausgeben wollen. Die Escape-Funktion sollte immer während der Ausgabe (php echo) verwendet werden, nicht davor.

Escaping functions im Überblick

esc_attr()

Wird für alles andere verwendet, das im Attribut eines HTML-Elements ausgegeben wird.

esc_html()

Wird immer dann verwendet, wenn ein HTML-Element einen Abschnitt mit Daten einschließt, der angezeigt wird (entfernt html).

esc_js()

Zu verwenden für Inline-Javascript.

esc_textarea()

Zur Kodierung von Text für die Verwendung in einem Textarea-Element.

esc_url()

Verwendung für alle URLs, einschließlich derer in den Attributen src und href eines HTML-Elements.

esc_url_raw()

Wird verwendet, wenn eine URL in der Datenbank gespeichert wird oder in anderen Fällen, in denen nicht kodierte URLs benötigt werden.

wp_kses()

Verwendung für alle nicht vertrauenswürdigen HTML-Elemente (Beitragstext, Kommentartext, usw.)

wp_kses_post()

Alternative Version von wp_kses(), die automatisch alle HTML-Inhalte zulässt, die in Beiträgen erlaubt sind.

wp_kses_data()

Alternative Version von wp_kses(), die nur den in Beitragskommentaren erlaubten HTML-Code zulässt.

Mehrsprachigkeit beim Escapen gewährleisten

Wird die Ausgabe wie im nachfolgenden Beispiel durchgeführt, stellen wir sicher, dass

  1. Die Sätze erhalten bleiben (keine Satzumbrüche).
  2. für eine korrekte Trennung gesorgt ist.
  3. die Möglichkeit geboten ist, Kontakt- und E-Mail-Links (oder etwas Ähnliches) innerhalb des übersetzten Satzes unterschiedlich anzuordnen.
// Beispiel url (könnte z.B. von einer unsicheren Benutzereingabe über ein Formular gekommen sein.)
$contact_url = 'https://www.example.com/contact/';
// escaping $contact_url
$contact_url = esc_url( $contact_url );

// Beispiel E-Mail-Adresse (könnte z.B. von einer unsicheren Benutzereingabe über ein Formular gekommen sein.)
$contact_email = 'info@mydomain.com';
// escaping, sanitizing & verbergen von $contact_email.
// Ja, man sollte die E-Mail-Adress auch dann noch sanitize und escapen, wenn man die antispambot() function verwendet
$contact_email = esc_url( sprintf( 'mailto:%s', antispambot( sanitize_email( $contact_email ) ) ), array( 'mailto' ) );

esc_html_e( 'Dear guest, we were unable to find any details regarding your request.', 'text-domain' );
echo "<br><br>";

printf(
    esc_html__( 'Please contact us through our %1$s or via %2$s.', 'text-domain' ),
    sprintf(
        '<a href="%s">%s</a>',
        $contact_url,
        esc_html__( 'Contact Page', 'text-domain' )
        ),
    sprintf(
        '<a href="%s">%s</a>',
        $contact_email,
        esc_html__( 'Email', 'text-domain' )
        )
    );

So hat der Übersetzer zwei vollständige Sätze und zwei einzelne Wörter zum Übersetzen. Ein Übersetzer muss sich also nur um die folgenden einfachen Zeilen kümmern (während der CODE den Rest übernimmt):

esc_html_e( 'Dear guest, we were unable to find any details regarding your request.', 'text-domain' );
// ...
esc_html__( 'Please contact us through our %1$s or via %2$s', 'text-domain' )
// ...
esc_html__( 'Contact Page', 'text-domain' )
// ...
esc_html__( 'Email', 'text-domain' )

Weitere Informationen finden Sie hier: Mehrsprachigkeit für WordPress Themes (eng) und Mehrsprachigkeit für Plugins (eng)

Für Fragen dürfen Sie wie immer gern die Kommentar-Funktion weiter unten auf dieser Seite verwenden.

<span  Teichmann</span>

Saskia Teichmann

Eine WordPress Full Stack Webentwicklerin aus Deutschland, die es mag schöne Websites und anspruchsvolle Webprojekte umzusetzen.

Privat geht Saskia gern mit ihrer Familie im Tramuntana Gebirge auf Mallorca wandern, in den Herrenhäuser Gärten in Hannover spazieren oder schwimmen im Meer.

Projektanfrage stellenKaffee ausgeben

0 Kommentare

Kommentar schreiben

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert