{"id":229866,"date":"2022-11-12T18:37:00","date_gmt":"2022-11-12T15:37:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229866"},"modified":"2022-11-09T16:44:24","modified_gmt":"2022-11-09T13:44:24","slug":"adicionando-atributos-de-imagem-personalizados-do-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/adicionando-atributos-de-imagem-personalizados-do-wordpress\/","title":{"rendered":"Adicionando atributos de imagem personalizados do WordPress"},"content":{"rendered":"<p>Quando se trata de trabalhar com <strong>the_content<\/strong>, \u00e9 simples.<\/p>\n<ol>\n<li>Configure um filtro que esteja conectado a <strong>the_content,<\/strong><\/li>\n<li>definir uma fun\u00e7\u00e3o que aceite o conte\u00fado do post recebido,<\/li>\n<li>fa\u00e7a suas altera\u00e7\u00f5es,<\/li>\n<li>retornar o conte\u00fado modificado.<\/li>\n<\/ol>\n<p>E na maioria das vezes, isso \u00e9 tudo o que \u00e9 necess\u00e1rio. Mas h\u00e1 momentos em que voc\u00ea pode querer fazer coisas mais avan\u00e7adas.<\/p>\n<p>Por exemplo, talvez voc\u00ea queira incluir conte\u00fado de um <a href=\"https:\/\/tommcfarlin.com\/buffering-wordpress-content\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">modelo externo<\/a>. Ou talvez voc\u00ea queira adicionar atributos \u00e0s imagens que encontrar na postagem.<\/p>\n<p>Pode ser dif\u00edcil fazer isso usando uma express\u00e3o regular (porque HTML \u00e9 uma linguagem n\u00e3o regular), mas com a ajuda do <a href=\"https:\/\/php.net\/manual\/en\/class.domdocument.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">DOMDocument<\/a> do PHP, n\u00e3o \u00e9 t\u00e3o ruim.<\/p>\n<p>A ideia por tr\u00e1s desse c\u00f3digo que estou prestes a mostrar \u00e9 a seguinte:<\/p>\n<ol>\n<li>procure por\u00a0 tags <strong>img<\/strong> no post,<\/li>\n<li>percorrer o que for encontrado,<\/li>\n<li>adicione os atributos,<\/li>\n<li>salve o HTML,<\/li>\n<li>retornar o resultado.<\/li>\n<\/ol>\n<p>Observe que voc\u00ea pode precisar ajustar isso com base em suas pr\u00f3prias necessidades, mas o c\u00f3digo b\u00e1sico <a href=\"https:\/\/gist.github.com\/tommcfarlin\/52ba9093940abf03519d77cd17dfa257\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">necess\u00e1rio \u00e9<\/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>Para aqueles que n\u00e3o est\u00e3o familiarizados com o DOMDocument e o que est\u00e1 acontecendo no c\u00f3digo acima (como por que certas fun\u00e7\u00f5es s\u00e3o chamadas antes de processar a marca\u00e7\u00e3o), aqui est\u00e1 um resumo r\u00e1pido:<\/p>\n<ul>\n<li><strong>mb_convert_encode<\/strong> .Isto ir\u00e1 pegar a codifica\u00e7\u00e3o de caracteres dos dados recebidos e convert\u00ea-los em UTF-8 (com base no c\u00f3digo acima, mas pode ser algo diferente).<\/li>\n<li><strong>libxml_use_internal_errors<\/strong>. Isso desativar\u00e1 qualquer relat\u00f3rio de erros e todos n\u00f3s, como programadores, recuperaremos os erros por conta pr\u00f3pria.<\/li>\n<li><strong>utf8_decode.\u00a0<\/strong>Isso decodifica as informa\u00e7\u00f5es em uma string de UTF-8 a ISO-8859-1. A raz\u00e3o pela qual fazemos isso \u00e9 que a maioria das p\u00e1ginas ter\u00e1 um conjunto de caracteres definido como o \u00faltimo e precisamos que ele seja codificado para o primeiro para process\u00e1-lo.<\/li>\n<\/ul>\n<p>Dito isso, tamb\u00e9m recomendo a leitura do DOMDocument para obter mais informa\u00e7\u00f5es sobre tudo o que est\u00e1 acontecendo acima.<\/p>\n<p>No entanto, uma vez que voc\u00ea use a fun\u00e7\u00e3o como o que est\u00e1 acima, voc\u00ea ter\u00e1 um\u00a0 atributo <strong>de exemplo de dados<\/strong> personalizado com um valor <strong>true<\/strong> nas imagens em toda a sua postagem.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>H\u00e1 momentos em que voc\u00ea pode querer fazer coisas mais avan\u00e7adas com seu conte\u00fado, como adicionar atributos de imagem personalizados do WordPress com 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":[898,846,867],"tags":[1170],"class_list":["post-229866","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo-2","category-tutoriais","category-wordpress-8","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/229866","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=229866"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/229866\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/165834"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=229866"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=229866"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=229866"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}