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

escaping, sanitisering och textdomäner > Programmera flerspråkiga teman och plugins!

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.

Denna artikel uppdaterades senast den 21 november 2023.

info
Skrivet av Saskia Teichmann
den 21 mars 2023
Sändning
Användarrecension
5 (2 röster)
Kommentarer Betyg 0 (0 recensioner)
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/">%s</a>',
        $contact_url,
        esc_html__( 'Kontaktsida', 'text-domän' )
        ),
    sprintf(
        '<a href="/sv/%s/">%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.

<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