{"id":229465,"date":"2022-11-12T18:16:00","date_gmt":"2022-11-12T15:16:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229465"},"modified":"2022-11-09T07:12:18","modified_gmt":"2022-11-09T04:12:18","slug":"agregar-atributos-de-imagen-de-wordpress-personalizados","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/agregar-atributos-de-imagen-de-wordpress-personalizados\/","title":{"rendered":"Agregar atributos de imagen de WordPress personalizados"},"content":{"rendered":"<p>Cuando se trata de trabajar con <strong>the_content<\/strong>, es sencillo.<\/p>\n<ol>\n<li>Configura un filtro que est\u00e9 conectado a <strong>the_content,<\/strong><\/li>\n<li>definir una funci\u00f3n que acepte el contenido de la publicaci\u00f3n entrante,<\/li>\n<li>haz tus cambios,<\/li>\n<li>devolver el contenido modificado.<\/li>\n<\/ol>\n<p>Y la mayor\u00eda de las veces, esto es todo lo que se necesita. Pero hay momentos en los que quiz\u00e1s quieras hacer cosas m\u00e1s avanzadas.<\/p>\n<p>Por ejemplo, tal vez desee incluir contenido de una <a href=\"https:\/\/tommcfarlin.com\/buffering-wordpress-content\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">plantilla externa<\/a>. O tal vez desee agregar atributos a las im\u00e1genes que encuentre en la publicaci\u00f3n.<\/p>\n<p>Puede ser dif\u00edcil hacer esto usando una expresi\u00f3n regular (porque HTML es un lenguaje no regular), pero con la ayuda de <a href=\"https:\/\/php.net\/manual\/en\/class.domdocument.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">DOMDocument<\/a> de PHP, no est\u00e1 tan mal.<\/p>\n<p>La idea detr\u00e1s de ese c\u00f3digo que estoy a punto de mostrar es la siguiente:<\/p>\n<ol>\n<li>busque\u00a0 etiquetas <strong>img<\/strong> en la publicaci\u00f3n,<\/li>\n<li>recorrer todo lo que se encuentre,<\/li>\n<li>agregar los atributos,<\/li>\n<li>guardar el HTML,<\/li>\n<li>devolver el resultado.<\/li>\n<\/ol>\n<p>Tenga en cuenta que es posible que deba ajustar esto seg\u00fan sus propias necesidades, pero el c\u00f3digo b\u00e1sico <a href=\"https:\/\/gist.github.com\/tommcfarlin\/52ba9093940abf03519d77cd17dfa257\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">que necesitar\u00e1 es<\/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 aquellos que no est\u00e1n familiarizados con DOMDocument y lo que sucede en el c\u00f3digo anterior (como por qu\u00e9 se llaman ciertas funciones antes de procesar el marcado), aqu\u00ed hay un resumen r\u00e1pido:<\/p>\n<ul>\n<li><strong>mb_convert_encode<\/strong>. Esto tomar\u00e1 la codificaci\u00f3n de caracteres de los datos entrantes y la convertir\u00e1 a UTF-8 (seg\u00fan el c\u00f3digo anterior, pero puede ser algo diferente).<\/li>\n<li><strong>libxml_use_internal_errors<\/strong>. Esto desactivar\u00e1 cualquier informe de error y todos nosotros, como programadores, recuperaremos los errores por nuestra cuenta.<\/li>\n<li><strong>utf8_decodificaci\u00f3n.\u00a0<\/strong>Esto decodifica la informaci\u00f3n en una cadena de UTF-8 a ISO-8859-1. La raz\u00f3n por la que hacemos esto es que la mayor\u00eda de las p\u00e1ginas tendr\u00e1n un conjunto de caracteres definido como el segundo y lo necesitamos codificado para el primero para procesarlo.<\/li>\n<\/ul>\n<p>Dicho esto, tambi\u00e9n recomiendo leer DOMDocument para obtener m\u00e1s informaci\u00f3n sobre todo lo que sucede arriba.<\/p>\n<p>No obstante, una vez que use la funci\u00f3n como la de arriba, tendr\u00e1 un atributo <strong>de ejemplo de datos personalizado con un valor de<\/strong> <strong>verdadero<\/strong> en las im\u00e1genes a lo largo de su publicaci\u00f3n.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hay momentos en los que es posible que desee hacer cosas m\u00e1s avanzadas con su contenido, como agregar atributos de imagen de WordPress personalizados con 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":[892,840,861],"tags":[1172],"class_list":["post-229465","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo","category-tutoriales","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/229465","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=229465"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/229465\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/165834"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=229465"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=229465"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=229465"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}