{"id":229883,"date":"2022-11-12T18:57:00","date_gmt":"2022-11-12T15:57:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229883"},"modified":"2022-11-09T19:08:06","modified_gmt":"2022-11-09T16:08:06","slug":"mukautettujen-wordpress-kuvamaeaeritteiden-lisaeaeminen","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/mukautettujen-wordpress-kuvamaeaeritteiden-lisaeaeminen\/","title":{"rendered":"Mukautettujen WordPress-kuvam\u00e4\u00e4ritteiden lis\u00e4\u00e4minen"},"content":{"rendered":"<p>Mit\u00e4 tulee <strong>the_content -sovelluksen k\u00e4ytt\u00e4miseen<\/strong>, se on yksinkertaista.<\/p>\n<ol>\n<li>M\u00e4\u00e4rit\u00e4 suodatin, joka on koukussa <strong>the_content,<\/strong><\/li>\n<li>m\u00e4\u00e4ritt\u00e4\u00e4 funktio, joka hyv\u00e4ksyy saapuvan viestin sis\u00e4ll\u00f6n,<\/li>\n<li>tee muutokset,<\/li>\n<li>palauttaa muokatun sis\u00e4ll\u00f6n.<\/li>\n<\/ol>\n<p>Ja useimmiten t\u00e4m\u00e4 on kaikki mit\u00e4 tarvitaan. Mutta on aikoja, jolloin saatat haluta tehd\u00e4 edistyneempi\u00e4 asioita.<\/p>\n<p>Haluat ehk\u00e4 esimerkiksi sis\u00e4llytt\u00e4\u00e4 sis\u00e4lt\u00f6\u00e4 <a href=\"https:\/\/tommcfarlin.com\/buffering-wordpress-content\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ulkoisesta mallista<\/a>. Tai ehk\u00e4 haluat lis\u00e4t\u00e4 attribuutteja kuviin, jotka l\u00f6yd\u00e4t viestist\u00e4.<\/p>\n<p>T\u00e4m\u00e4 voi olla vaikeaa tehd\u00e4 s\u00e4\u00e4nn\u00f6llisell\u00e4 lausekkeella (koska HTML on ep\u00e4s\u00e4\u00e4nn\u00f6llinen kieli), mutta PHP:n <a href=\"https:\/\/php.net\/manual\/en\/class.domdocument.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">DOMDocumentin<\/a> avulla se ei ole huono asia.<\/p>\n<p>Ajatus t\u00e4m\u00e4n koodin takana, jonka aion n\u00e4ytt\u00e4\u00e4, on seuraava:<\/p>\n<ol>\n<li>etsi\u00a0 viestist\u00e4 <strong>img<\/strong> &#8211; tunnisteita,<\/li>\n<li>k\u00e4yd\u00e4 l\u00e4pi mit\u00e4 l\u00f6ytyy,<\/li>\n<li>lis\u00e4\u00e4 attribuutit,<\/li>\n<li>tallenna HTML,<\/li>\n<li>palauta tulos.<\/li>\n<\/ol>\n<p>Huomaa, ett\u00e4 saatat joutua s\u00e4\u00e4t\u00e4m\u00e4\u00e4n t\u00e4t\u00e4 omien tarpeidesi mukaan, mutta tarvitsemasi peruskoodi <a href=\"https:\/\/gist.github.com\/tommcfarlin\/52ba9093940abf03519d77cd17dfa257\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">on<\/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>Niille, jotka eiv\u00e4t tunne DOMDocumentia ja mit\u00e4 yll\u00e4 olevassa koodissa tapahtuu (kuten miksi tiettyj\u00e4 toimintoja kutsutaan ennen merkinn\u00e4n k\u00e4sittely\u00e4), t\u00e4ss\u00e4 on lyhyt yhteenveto:<\/p>\n<ul>\n<li><strong>mb_convert_encode<\/strong> .T\u00e4m\u00e4 ottaa saapuvan tiedon merkkikoodauksen ja muuntaa sen UTF-8:ksi (perustuu yll\u00e4 olevaan koodiin, mutta se voi olla jotain muuta).<\/li>\n<li><strong>libxml_use_internal_errors<\/strong>. T\u00e4m\u00e4 sammuttaa kaikki virheilmoitukset ja me kaikki ohjelmoijana haemme virheet itse.<\/li>\n<li><strong>utf8_decode.\u00a0<\/strong>T\u00e4m\u00e4 purkaa tiedot merkkijonosta UTF-8:sta ISO-8859-1:een. Syy, miksi teemme t\u00e4m\u00e4n, on se, ett\u00e4 useimmilla sivuilla on merkist\u00f6, joka on m\u00e4\u00e4ritelty j\u00e4lkimm\u00e4iseksi, ja meid\u00e4n on koodattava se edelliseen k\u00e4sitell\u00e4ksemme sit\u00e4.<\/li>\n<\/ul>\n<p>Suosittelen kuitenkin lukemaan DOMDocumentista lis\u00e4tietoja kaikesta, mit\u00e4 yll\u00e4 tapahtuu.<\/p>\n<p>Siit\u00e4 huolimatta, kun k\u00e4yt\u00e4t yll\u00e4 olevan kaltaista toimintoa, sinulla on kuvissa muokattu <strong>data-esimerkki-<\/strong> attribuutti, jonka arvo on <strong>tosi .<\/strong><\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Joskus saatat haluta tehd\u00e4 sis\u00e4ll\u00f6ll\u00e4si edistyneempi\u00e4 asioita, kuten lis\u00e4t\u00e4 mukautettuja WordPress-kuvaattribuutteja the_contentilla.<\/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":[895,843,864],"tags":[1166],"class_list":["post-229883","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-koodi","category-opetusohjelmia","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229883","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=229883"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229883\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/165834"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=229883"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=229883"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=229883"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}