Utdrag fra WordPress-håndboken for utviklere:
Under Escaping Output menes sikring av utdata ved å fjerne uønskede data eller tegn, for eksempel feilaktige HTML- eller skripttagger. Mekanismen bidrar til å sikre dataene før de vises for sluttbrukeren.
WordPress har mange hjelpefunksjoner som kan brukes i de vanligste situasjonene.
Vær nøye med hva hver funksjon gjør. Noen fjerner HTML, mens andre tillater det. Bruk funksjonen som passer best til innholdet og sammenhengen dataene skal vises i. Escaping skal alltid gjøres idet innholdet sendes ut med PHP echo, ikke på forhånd.
Oversikt over escaping-funksjoner
esc_attr()
Brukes for alt annet innhold som sendes ut i et attributt på et HTML-element.
esc_html()
Brukes når et HTML-element omslutter data som skal vises (fjerner HTML).
esc_js()
Brukes for innebygd JavaScript.
esc_textarea()
Koder tekst som skal brukes i et textarea-element.
esc_url()
Brukes for alle nettadresser, også i src- og href-attributtene på HTML-elementer.
esc_url_raw()
Brukes når en nettadresse lagres i databasen, eller i andre tilfeller der det trengs nettadresser som ikke er kodet.
wp_kses()
Brukes for alle HTML-elementer som ikke er betrodde, som innleggstekst og kommentarer.
wp_kses_post()
En variant av wp_kses() som automatisk tillater alt HTML-innhold som er tillatt i innlegg.
wp_kses_data()
En variant av wp_kses() som bare tillater HTML-koden som er tillatt i kommentarer til innlegg.
Sikre flerspråklighet ved escaping
Ved å sende ut innhold som i eksemplet nedenfor sikrer vi at
- setningene bevares hele, uten å bli delt opp,
- delene skilles fra hverandre på riktig måte,
- kontakt- og e-postlenker eller tilsvarende kan plasseres forskjellig i den oversatte setningen.
// Eksempel-url (kunne f.eks. kommet fra en usikker brukerinntasting via et skjema.)
$contact_url = 'https://www.example.com/contact/';
// escaping $contact_url
$contact_url = esc_url( $contact_url );
// Eksempel på e-postadresse (kunne f.eks. kommet fra en usikker brukerinntasting via et skjema.)
$contact_email = 'info@mydomain.com';
// escaping, sanitizing og skjuling av $contact_email.
// Ja, man bør sanitize og escape e-postadressen selv når man bruker funksjonen antispambot()
$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="/no/%s/">%s</a>',
$contact_url,
esc_html__( 'Contact Page', 'text-domain' )
),
sprintf(
'<a href="/no/%s/">%s</a>',
$contact_email,
esc_html__( 'Email', 'text-domain' )
)
);
Dermed får oversetteren to hele setninger og to enkeltord å oversette. Oversetteren trenger bare å arbeide med disse enkle linjene, mens koden tar seg av resten:
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' )
Du finner mer informasjon her: Flerspråklighet i WordPress-temaer (engelsk) og Flerspråklighet i utvidelser (engelsk)
Har du spørsmål, kan du som vanlig bruke kommentarfeltet lenger nede på siden.





Diskusjon om innlegget
0 kommentarer