{"id":229206,"date":"2022-11-12T18:38:00","date_gmt":"2022-11-12T15:38:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229206"},"modified":"2022-11-09T05:58:03","modified_gmt":"2022-11-09T02:58:03","slug":"dodawanie-niestandardowych-atrybutow-obrazu-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/dodawanie-niestandardowych-atrybutow-obrazu-wordpress\/","title":{"rendered":"Dodawanie niestandardowych atrybut\u00f3w obrazu WordPress"},"content":{"rendered":"<p>Je\u015bli chodzi o prac\u0119 z <strong>the_content<\/strong>, jest to proste.<\/p>\n<ol>\n<li>Skonfiguruj filtr podpi\u0119ty do <strong>the_content,<\/strong><\/li>\n<li>zdefiniowa\u0107 funkcj\u0119 akceptuj\u0105c\u0105 tre\u015b\u0107 przychodz\u0105cych post\u00f3w,<\/li>\n<li>dokonaj zmian,<\/li>\n<li>zwr\u00f3ci\u0107 zmodyfikowan\u0105 zawarto\u015b\u0107.<\/li>\n<\/ol>\n<p>I przez wi\u0119kszo\u015b\u0107 czasu to wszystko, co jest potrzebne. Ale s\u0105 chwile, w kt\u00f3rych mo\u017cesz chcie\u0107 robi\u0107 bardziej zaawansowane rzeczy.<\/p>\n<p>Na przyk\u0142ad, by\u0107 mo\u017ce b\u0119dziesz chcia\u0142 do\u0142\u0105czy\u0107 tre\u015b\u0107 z <a href=\"https:\/\/tommcfarlin.com\/buffering-wordpress-content\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">zewn\u0119trznego szablonu<\/a>. A mo\u017ce zechcesz doda\u0107 atrybuty do obraz\u00f3w, kt\u00f3re znajdziesz w po\u015bcie.<\/p>\n<p>Mo\u017ce to by\u0107 trudne przy u\u017cyciu wyra\u017cenia regularnego (poniewa\u017c HTML nie jest j\u0119zykiem regularnym), ale z pomoc\u0105 <a href=\"https:\/\/php.net\/manual\/en\/class.domdocument.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">DOMDocument<\/a> PHP nie jest tak \u017ale.<\/p>\n<p>Idea tego kodu, kt\u00f3ry zamierzam pokaza\u0107, jest nast\u0119puj\u0105ca:<\/p>\n<ol>\n<li>poszukaj tag\u00f3w <strong>img w po\u015bcie,<\/strong><\/li>\n<li>przejd\u017a przez wszystko, co zostanie znalezione,<\/li>\n<li>dodaj atrybuty,<\/li>\n<li>zapisz kod HTML,<\/li>\n<li>zwr\u00f3\u0107 wynik.<\/li>\n<\/ol>\n<p>Pami\u0119taj, \u017ce mo\u017ce by\u0107 konieczne dostosowanie tego do w\u0142asnych potrzeb, ale podstawowy kod <a href=\"https:\/\/gist.github.com\/tommcfarlin\/52ba9093940abf03519d77cd17dfa257\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">, kt\u00f3rego b\u0119dziesz potrzebowa\u0107, to<\/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>Dla tych, kt\u00f3rzy nie s\u0105 zaznajomieni z DOMDocument i tym, co dzieje si\u0119 w powy\u017cszym kodzie (np. dlaczego niekt\u00f3re funkcje s\u0105 wywo\u0142ywane przed przetworzeniem znacznik\u00f3w), oto kr\u00f3tkie podsumowanie:<\/p>\n<ul>\n<li><strong>mb_convert_encode<\/strong>. To zajmie kodowanie znak\u00f3w przychodz\u0105cych danych i przekonwertuje je na UTF-8 (na podstawie powy\u017cszego kodu, ale mo\u017ce to by\u0107 co\u015b innego).<\/li>\n<li><strong>libxml_use_internal_errors<\/strong>. Spowoduje to wy\u0142\u0105czenie raportowania o b\u0142\u0119dach, a my, jako programista, b\u0119dziemy mogli samodzielnie odzyska\u0107 b\u0142\u0119dy.<\/li>\n<li><strong>utf8_decode.\u00a0<\/strong>To dekoduje informacje w ci\u0105gu od UTF-8 do ISO-8859-1. Powodem, dla kt\u00f3rego to robimy, jest to, \u017ce wi\u0119kszo\u015b\u0107 stron b\u0119dzie mia\u0142a zestaw znak\u00f3w zdefiniowany jako drugi i potrzebujemy go zakodowa\u0107 do pierwszego, aby go przetworzy\u0107.<\/li>\n<\/ul>\n<p>To powiedziawszy, polecam r\u00f3wnie\u017c przeczyta\u0107 na DOMDocument, aby uzyska\u0107 wi\u0119cej informacji o wszystkim, co dzieje si\u0119 powy\u017cej.<\/p>\n<p>Niemniej jednak, gdy u\u017cyjesz funkcji takiej jak powy\u017cej, b\u0119dziesz mie\u0107 niestandardowy\u00a0 atrybut <strong>przyk\u0142ad danych<\/strong> z warto\u015bci\u0105 <strong>true<\/strong> na obrazach w ca\u0142ym po\u015bcie.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>S\u0105 chwile, w kt\u00f3rych mo\u017cesz chcie\u0107 zrobi\u0107 bardziej zaawansowane rzeczy ze swoj\u0105 tre\u015bci\u0105, takie jak dodanie niestandardowych atrybut\u00f3w obrazu WordPress z 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":[897,845,866],"tags":[1169],"class_list":["post-229206","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kod","category-samouczki","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/229206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=229206"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/229206\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/165834"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=229206"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=229206"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=229206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}