{"id":2942,"date":"2023-03-21T13:59:01","date_gmt":"2023-03-21T12:59:01","guid":{"rendered":"https:\/\/www.saskialund.de\/?p=2942"},"modified":"2023-11-21T12:24:38","modified_gmt":"2023-11-21T11:24:38","slug":"uebersetzbare-php-funktionen-fuer-wordpress-schreiben","status":"publish","type":"post","link":"https:\/\/isla-stud.io\/no\/ratgeber\/uebersetzbare-php-funktionen-fuer-wordpress-schreiben\/","title":{"rendered":"Skrive oversettbare PHP-funksjoner for WordPress"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Utdrag fra <a href=\"https:\/\/developer.wordpress.org\/apis\/security\/escaping\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">WordPress-h\u00e5ndboken for utviklere<\/a>:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Under <em>Escaping Output <\/em>menes sikring av utdata ved \u00e5 fjerne u\u00f8nskede data eller tegn, for eksempel feilaktige HTML- eller skripttagger. Mekanismen bidrar til \u00e5 sikre dataene f\u00f8r de vises for sluttbrukeren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress har mange hjelpefunksjoner som kan brukes i de vanligste situasjonene.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">V\u00e6r n\u00f8ye med hva hver funksjon gj\u00f8r. Noen fjerner HTML, mens andre tillater det. Bruk funksjonen som passer best til innholdet og sammenhengen dataene skal vises i. Escaping skal alltid gj\u00f8res idet innholdet sendes ut med PHP echo, ikke p\u00e5 forh\u00e5nd.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Oversikt over escaping-funksjoner<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">esc_attr()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Brukes for alt annet innhold som sendes ut i et attributt p\u00e5 et HTML-element. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">esc_html()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Brukes n\u00e5r et HTML-element omslutter data som skal vises (fjerner HTML).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">esc_js()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Brukes for innebygd JavaScript.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">esc_textarea()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"> Koder tekst som skal brukes i et textarea-element.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">esc_url()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"> Brukes for alle nettadresser, ogs\u00e5 i src- og href-attributtene p\u00e5 HTML-elementer.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">esc_url_raw()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Brukes n\u00e5r en nettadresse lagres i databasen, eller i andre tilfeller der det trengs nettadresser som ikke er kodet.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">wp_kses()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Brukes for alle HTML-elementer som ikke er betrodde, som innleggstekst og kommentarer.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">wp_kses_post()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En variant av wp_kses() som automatisk tillater alt HTML-innhold som er tillatt i innlegg.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">wp_kses_data()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En variant av wp_kses() som bare tillater HTML-koden som er tillatt i kommentarer til innlegg.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sikre flerspr\u00e5klighet ved escaping<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ved \u00e5 sende ut innhold som i eksemplet nedenfor sikrer vi at<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>setningene bevares hele, uten \u00e5 bli delt opp,<\/li>\n\n\n\n<li>delene skilles fra hverandre p\u00e5 riktig m\u00e5te,<\/li>\n\n\n\n<li>kontakt- og e-postlenker eller tilsvarende kan plasseres forskjellig i den oversatte setningen.<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\" style=\"font-size:14px\"><code lang=\"php\" class=\"language-php\">\/\/ Eksempel-url (kunne f.eks. kommet fra en usikker brukerinntasting via et skjema.)\n$contact_url = &#039;https:\/\/www.example.com\/contact\/&#039;;\n\/\/ escaping $contact_url\n$contact_url = esc_url( $contact_url );\n\n\/\/ Eksempel p&aring; e-postadresse (kunne f.eks. kommet fra en usikker brukerinntasting via et skjema.)\n$contact_email = &#039;info@mydomain.com&#039;;\n\/\/ escaping, sanitizing og skjuling av $contact_email.\n\/\/ Ja, man b&oslash;r sanitize og escape e-postadressen selv n&aring;r man bruker funksjonen antispambot()\n$contact_email = esc_url( sprintf( &#039;mailto:%s&#039;, antispambot( sanitize_email( $contact_email ) ) ), array( &#039;mailto&#039; ) );\n\nesc_html_e( &#039;Dear guest, we were unable to find any details regarding your request.&#039;, &#039;text-domain&#039; );\necho &quot;&lt;br&gt;&lt;br&gt;&quot;;\n\nprintf(\n    esc_html__( &#039;Please contact us through our %1$s or via %2$s.&#039;, &#039;text-domain&#039; ),\n    sprintf(\n        &#039;&lt;a href=&quot;\/no\/%s\/&quot;&gt;%s&lt;\/a&gt;&#039;,\n        $contact_url,\n        esc_html__( &#039;Contact Page&#039;, &#039;text-domain&#039; )\n        ),\n    sprintf(\n        &#039;&lt;a href=&quot;\/no\/%s\/&quot;&gt;%s&lt;\/a&gt;&#039;,\n        $contact_email,\n        esc_html__( &#039;Email&#039;, &#039;text-domain&#039; )\n        )\n    );<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dermed f\u00e5r oversetteren to hele setninger og to enkeltord \u00e5 oversette. Oversetteren trenger bare \u00e5 arbeide med disse enkle linjene, mens koden tar seg av resten:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"font-size:14px\"><code lang=\"php\" class=\"language-php\">esc_html_e( 'Dear guest, we were unable to find any details regarding your request.', 'text-domain' );\n\/\/ ...\nesc_html__( 'Please contact us through our %1$s or via %2$s', 'text-domain' )\n\/\/ ...\nesc_html__( 'Contact Page', 'text-domain' )\n\/\/ ...\nesc_html__( 'Email', 'text-domain' )<\/code><\/pre>\n\n\n\n<p class=\"has-small-font-size wp-block-paragraph\">Du finner mer informasjon her: <a href=\"https:\/\/developer.wordpress.org\/themes\/functionality\/internationalization\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Flerspr\u00e5klighet i WordPress-temaer (engelsk)<\/a> og <a href=\"https:\/\/developer.wordpress.org\/plugins\/internationalization\/how-to-internationalize-your-plugin\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Flerspr\u00e5klighet i utvidelser (engelsk)<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Har du sp\u00f8rsm\u00e5l, kan du som vanlig bruke kommentarfeltet lenger nede p\u00e5 siden.<\/p>","protected":false},"excerpt":{"rendered":"<p>Her finner du nyttige PHP-kodebiter for \u00e5 gj\u00f8re tekster oversettbare i WordPress og for \u00e5 realisere flerspr\u00e5klige temaer og utvidelser for WordPress.<\/p>","protected":false},"author":1,"featured_media":2956,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_isla_series_order":0,"_isla_series_term_id":0,"footnotes":""},"categories":[13,644,20],"tags":[],"isla_series":[],"class_list":["post-2942","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ratgeber","category-code-snippets","category-tipps-tricks"],"acf":[],"_links":{"self":[{"href":"https:\/\/isla-stud.io\/no\/wp-json\/wp\/v2\/posts\/2942","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/isla-stud.io\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/isla-stud.io\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/isla-stud.io\/no\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/isla-stud.io\/no\/wp-json\/wp\/v2\/comments?post=2942"}],"version-history":[{"count":2,"href":"https:\/\/isla-stud.io\/no\/wp-json\/wp\/v2\/posts\/2942\/revisions"}],"predecessor-version":[{"id":3109,"href":"https:\/\/isla-stud.io\/no\/wp-json\/wp\/v2\/posts\/2942\/revisions\/3109"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/isla-stud.io\/no\/wp-json\/wp\/v2\/media\/2956"}],"wp:attachment":[{"href":"https:\/\/isla-stud.io\/no\/wp-json\/wp\/v2\/media?parent=2942"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/isla-stud.io\/no\/wp-json\/wp\/v2\/categories?post=2942"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/isla-stud.io\/no\/wp-json\/wp\/v2\/tags?post=2942"},{"taxonomy":"isla_series","embeddable":true,"href":"https:\/\/isla-stud.io\/no\/wp-json\/wp\/v2\/isla_series?post=2942"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}