{"id":229120,"date":"2022-11-12T18:31:00","date_gmt":"2022-11-12T15:31:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229120"},"modified":"2022-11-09T05:37:00","modified_gmt":"2022-11-09T02:37:00","slug":"laegga-till-anpassade-wordpress-bildattribut","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/laegga-till-anpassade-wordpress-bildattribut\/","title":{"rendered":"L\u00e4gga till anpassade WordPress-bildattribut"},"content":{"rendered":"<p>N\u00e4r det kommer till att arbeta med <strong>the_content<\/strong> \u00e4r det enkelt.<\/p>\n<ol>\n<li>Konfigurera ett filter som \u00e4r <strong>anslutet till_inneh\u00e5llet,<\/strong><\/li>\n<li>definiera en funktion som accepterar det inkommande inl\u00e4ggets inneh\u00e5ll,<\/li>\n<li>g\u00f6r dina \u00e4ndringar,<\/li>\n<li>returnera det \u00e4ndrade inneh\u00e5llet.<\/li>\n<\/ol>\n<p>Och f\u00f6r det mesta \u00e4r detta allt som beh\u00f6vs. Men det finns tillf\u00e4llen d\u00e5 du kanske vill g\u00f6ra mer avancerade saker.<\/p>\n<p>Till exempel kanske du vill inkludera inneh\u00e5ll fr\u00e5n en <a href=\"https:\/\/tommcfarlin.com\/buffering-wordpress-content\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">extern mall<\/a>. Eller s\u00e5 kanske du vill l\u00e4gga till attribut till bilder som du hittar i inl\u00e4gget.<\/p>\n<p>Det kan vara sv\u00e5rt att g\u00f6ra detta med ett regulj\u00e4rt uttryck (eftersom HTML \u00e4r ett icke-vanligt spr\u00e5k) men med hj\u00e4lp av <a href=\"https:\/\/php.net\/manual\/en\/class.domdocument.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPs DOMDocument<\/a> \u00e4r det inte s\u00e5 illa.<\/p>\n<p>Tanken bakom den koden som jag ska visa \u00e4r f\u00f6ljande:<\/p>\n<ol>\n<li>leta efter <strong>img-<\/strong> taggar i inl\u00e4gget,<\/li>\n<li>g\u00e5 igenom vad som \u00e4n hittas,<\/li>\n<li>l\u00e4gg till attributen,<\/li>\n<li>spara HTML,<\/li>\n<li>returnera resultatet.<\/li>\n<\/ol>\n<p>Observera att du kan beh\u00f6va justera detta baserat p\u00e5 dina egna behov, men den grundl\u00e4ggande koden <a href=\"https:\/\/gist.github.com\/tommcfarlin\/52ba9093940abf03519d77cd17dfa257\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">som du beh\u00f6ver \u00e4r<\/a> :<\/p>\n<pre><code>&lt;?php\n\nprivate function addImageAttributes($content)\n{\n\n  $content  = mb_convert_encoding($content, 'HTML-ENTITIES', \"UTF-8\");\n  $document = new DOMDocument();\n\n  libxml_use_internal_errors(true);\n  $document-&gt;loadHTML(utf8_decode($content));\n\n  $images = $document-&gt;getElementsByTagName('img');\n  foreach ($images as $image) {\n      $image-&gt;setAttribute('data-example', 'true');\n  }\n\n  return $document-&gt;saveHTML();\n}<\/code><\/pre>\n<p>F\u00f6r de som inte \u00e4r bekanta med DOMDocument och vad som h\u00e4nder i koden ovan (som i varf\u00f6r vissa funktioner anropas innan m\u00e4rkningen bearbetas), h\u00e4r \u00e4r en snabb sammanfattning:<\/p>\n<ul>\n<li><strong>mb_convert_encode<\/strong> .Detta tar teckenkodningen f\u00f6r inkommande data och konverterar den till UTF-8 (baserat p\u00e5 koden ovan, men det kan vara n\u00e5got annat).<\/li>\n<li><strong>libxml_use_internal_errors<\/strong>. Detta kommer att st\u00e4nga av all felrapportering och alla vi, som programmerare, \u00e5terst\u00e4ller felen p\u00e5 egen hand.<\/li>\n<li><strong>utf8_decode.\u00a0<\/strong>Detta avkodar informationen i en str\u00e4ng fr\u00e5n UTF-8 till ISO-8859-1. Anledningen till att vi g\u00f6r detta \u00e4r att de flesta sidor kommer att ha en teckenupps\u00e4ttning definierad som den senare och vi beh\u00f6ver den kodad till den f\u00f6rra f\u00f6r att bearbeta den.<\/li>\n<\/ul>\n<p>Som sagt, jag rekommenderar ocks\u00e5 att du l\u00e4ser p\u00e5 DOMDocument f\u00f6r mer information om allt som h\u00e4nder ovan.<\/p>\n<p>Icke desto mindre, n\u00e4r du anv\u00e4nder funktionen som det som \u00e4r ovan, kommer du att ha ett anpassat <strong>dataexempelattribut<\/strong> med v\u00e4rdet <strong>true<\/strong> p\u00e5 bilderna genom hela ditt inl\u00e4gg.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Det finns tillf\u00e4llen d\u00e5 du kanske vill g\u00f6ra mer avancerade saker med ditt inneh\u00e5ll som att l\u00e4gga till anpassade WordPress-bildattribut med the_content.<\/p>\n","protected":false},"author":1,"featured_media":165834,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[848,901,868],"tags":[1173],"class_list":["post-229120","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-handledningar","category-koda","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/229120","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=229120"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/229120\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/165834"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=229120"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=229120"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=229120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}