Skriva översättningsbara PHP-funktioner för WordPress

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

Här hittar du användbara PHP-snuttar för att skriva ut texter som kan översättas i WordPress och för att skapa flerspråkiga teman och plugins för WordPress.

Dieser Artikel wurde zuletzt am 21. november 2023 aktualisiert.

info
Skrivet av Saskia Teichmann
am 21. mars 2023
Sändning
Användarrecension
5 (2 röster)
Kommentarer Betyg 0 (0 recensioner)
Code Snippets - PHP - WordPress

Auszug aus dem WordPress Entwickler-Handbuch:

Under 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="/sv/%s/">%s</a>',
        $contact_url,
        esc_html__( 'Contact Page', 'text-domain' )
        ),
    sprintf(
        '<a href="/sv/%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) och Mehrsprachigkeit für Plugins (eng)

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

<span class="castledown-font">Saskia Teichmann</span>

Saskia Teichmann

Saskia Teichmann är certifierad AI-expert (MMAI®), snart medlem i German AI Association samt WooCommerce-specialist och WordPress-utvecklare. Hon hjälper små och medelstora företag och industrin att integrera AI, GDPR, EU:s AI-förordning och modern webbteknik i en framtidssäker och rättssäker digital strategi.

Skicka in en projektförfråganServera kaffe

0 kommentarer

Skicka en kommentar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

Sändning