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

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.

Code Snippets - PHP - WordPress

Utdrag ur Handbok för WordPress-utvecklare:

Under Undanflyende utmatning är att skydda utdata genom att ta bort oönskade data/tecken, t.ex. felaktiga HTML- eller skripttaggar. Denna mekanism bidrar till att säkerställa att data är säkrade för slutanvändaren före rendering.

WordPress innehåller många hjälpfunktioner som du kan använda för de vanligaste scenarierna.

Var noga med vad varje funktion gör, eftersom vissa tar bort HTML medan andra tillåter det. Du bör använda den funktion som är lämpligast för det innehåll och sammanhang som du vill mata ut. Escape-funktionen ska alltid användas under utmatningen (php echo), inte före.

Utrymningsfunktioner i överblick

esc_attr()

Används för allt annat som skrivs ut i attributet för ett HTML-element.

esc_html()

Används alltid när ett HTML-element innehåller en sektion med data som visas (tar bort html).

esc_js()

Används för inline-javascript.

esc_textarea()

För kodning av text som ska användas i ett textarea-element.

esc_url()

Används för alla webbadresser, inklusive de som finns i src- och href-attributen i ett HTML-element.

esc_url_raw()

Används när en URL lagras i databasen eller i andra fall där okodade URL:er krävs.

wp_kses()

Används för alla opålitliga HTML-element (inläggstext, kommentarstext etc.)

wp_kses_post()

Alternativ version av wp_kses(), som automatiskt tillåter allt HTML-innehåll som är tillåtet i inlägg.

wp_kses_data()

Alternativ version av wp_kses(), som endast tillåter den HTML-kod som tillåts i inläggskommentarer.

Säkerställ flerspråkighet när du flyr

Om utmatningen utförs som i följande exempel säkerställer vi att

  1. Meningarna förblir intakta (inga meningsbrytningar).
  2. korrekt separation säkerställs.
  3. möjlighet att ordna kontakt- och e-postlänkar (eller något liknande) på olika sätt i den översatta meningen.
// Exempel på webbadress (kan ha kommit från en osäker användarinmatning via ett formulär, till exempel).
$contact_url = 'https://www.example.com/contact/';
// escaping av $contact_url
$contact_url = esc_url( $contact_url );

// Exempel på e-postadress (kan ha kommit från en osäker användarinmatning via ett formulär, till exempel).
$contact_email = 'info@mydomain.com';
// escaping, sanitizing & hiding av $contact_email.
// Ja, du bör fortfarande rensa och undkomma e-postadressen även om du använder funktionen antispambot()
$contact_email = esc_url( sprintf( 'mailto:%s', antispambot( sanitise_email( $contact_email ) ) ), array( 'mailto' ) );

esc_html_e( 'Kära gäst, vi kunde inte hitta någon information om din förfrågan.', 'text-domain' );
echo "<br><br>";

printf(
    esc_html__( 'Vänligen kontakta oss via vår %1$s eller via %2$s.', 'text-domain' ),
    sprintf(
        '<a href="/sv/s-2/">%s</a>',
        $contact_url,
        esc_html__( 'Kontaktsida', 'text-domän' )
        ),
    sprintf(
        '<a href="/sv/s-2/">%s</a>',
        $kontakt_email,
        esc_html__( 'E-post', 'text-domän' )
        )
    );

Detta ger översättaren två fullständiga meningar och två enskilda ord att översätta. En översättare behöver därför bara ta hand om följande enkla rader (medan CODE tar hand om resten):

esc_html_e( 'Kära gäst, vi kunde inte hitta någon information om din förfrågan.', 'text-domain' );
// ...
esc_html__( 'Vänligen kontakta oss via vår %1$s eller via %2$s', 'text-domain' )
// ...
esc_html__( 'Kontaktsida', 'text-domän' )
// ...
esc_html__( 'E-post', 'text-domän' )

Ytterligare information finns här: Flerspråkighet för WordPress teman (eng) och Flerspråkighet för insticksprogram (eng)

Om du har några frågor är du välkommen att använda kommentarsfunktionen längst ned på denna sida.

Om författaren

Saskia Teichmann ger råd om AI, e-handel och digitala plattformar och granskar själv de tekniska förutsättningarna i arkitekturen och koden.

Mer om mitt arbete

Diskussion om inlägget

0 kommentarer

Delta i diskussionen

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade.

Nyheter från studion

Nya inlägg via e-post.

När en ny verkstadsrapport eller guide publiceras får du ett kort e-postmeddelande med länken. Ingen fast utgivningsfrekvens, inga reklaminslag.

Läs hellre via RSS

Registreringen aktiveras först när du har klickat på bekräftelselänken. Du kan när som helst avsluta prenumerationen via länken i varje e-postmeddelande.