---
tittel: "Skrive oversettbare PHP-funksjoner for WordPress — isla Studio"
url: "https://isla-stud.io/no/ratgeber/uebersetzbare-php-funktionen-fuer-wordpress-schreiben/"
date: 2023-03-21
---

# Skrive oversettbare PHP-funksjoner for WordPress

Utdrag fra [WordPress-utviklerhåndboken](https://developer.wordpress.org/apis/security/escaping/):

Med *Escaping Output* menes sikring av utdatadata ved å fjerne uønskede data/tegn, som f.eks. feilaktige HTML- eller skript-tagger. Denne mekanismen bidrar til at dataene sikres før de vises for sluttbrukeren.

WordPress inneholder en rekke hjelpefunksjoner som du kan bruke i de vanligste scenariene.

Vær nøye med hva de enkelte funksjonene gjør, for noen fjerner HTML, mens andre tillater det. Du bør bruke den funksjonen som passer best for innholdet og konteksten du ønsker å vise. Escape-funksjonen bør alltid brukes under utdata (php echo), ikke før.

Oversikt over escape-funksjoner
-------------------------------

```php
esc_attr()
```

Brukes til alt annet som vises i attributten til et HTML-element.

```php
esc_html()
```

Brukes alltid når et HTML-element inneholder en del med data som skal vises (fjerner HTML).

```php
esc_js()
```

Brukes for innebygd JavaScript.

```php
esc_textarea()
```

For å kode tekst til bruk i et textarea-element.

```php
esc_url()
```

Brukes for alle URL-er, inkludert de som finnes i attributtene src og href i et HTML-element.

```php
esc_url_raw()
```

Brukes når en URL lagres i databasen eller i andre tilfeller der ukodede URL-er er nødvendige.

```php
wp_kses()
```

Brukes for alle ikke-pålitelige HTML-elementer (innleggstekst, kommentartekst osv.)

```php
wp_kses_post()
```

Alternativ versjon av wp_kses(), som automatisk tillater alt HTML-innhold som er tillatt i innlegg.

```php
wp_kses_data()
```

Alternativ versjon av wp_kses(), som kun tillater HTML-kode som er tillatt i innleggskommentarer.

Sikre flerspråklighet ved eskaping
-------------------------------------------

Hvis utdataene behandles som i eksemplet nedenfor, sikrer vi at

1. setningene beholdes (ingen setningsbrudd).
2. det sørges for korrekt skille.
3. det gis mulighet til å plassere kontakt- og e-postlenker (eller noe lignende) på forskjellige måter innenfor den oversatte setningen.

```php
// Eksempel på url (kan f.eks. stamme fra en usikker brukerinndata via et skjema.)
$contact_url = 'https://www.example.com/contact/';
// eskaping av $contact_url
$contact_url = esc_url( $contact_url );

// Eksempel på e-postadresse (kan f.eks. stamme fra en usikker brukerinndata via et skjema.)
$contact_email = 'info@mydomain.com';
// eskaping, rensing og skjuling av $contact_email.
// Ja, man bør fortsatt rense og eskapere e-postadressen selv om man bruker funksjonen antispambot()
$contact_email = esc_url( sprintf( 'mailto:%s', antispambot( sanitize_email( $contact_email ) ) ), array( 'mailto' ) );

esc_html_e( 'Kjære gjest, vi klarte ikke å finne noen opplysninger om forespørselen din.', '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__( 'E-post', 'text-domain' )
 )
    );
```

På denne måten har oversetteren to fullstendige setninger og to enkeltord å oversette. En oversetter trenger derfor bare å ta seg av følgende enkle linjer (mens KODEN tar seg av resten):

```php
esc_html_e( 'Kjære gjest, vi klarte ikke å finne noen opplysninger om forespørselen din.', '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__( 'E-post', 'text-domain' )
```

Du finner mer informasjon her: [Flerspråklighet for WordPress-temaer (eng)](https://developer.wordpress.org/themes/functionality/internationalization/) og [Flerspråklighet for plugins (eng)](https://developer.wordpress.org/plugins/internationalization/how-to-internationalize-your-plugin/)

Hvis du har spørsmål, kan du som alltid bruke kommentarfunksjonen lenger ned på denne siden.