{"id":229767,"date":"2022-11-12T18:58:00","date_gmt":"2022-11-12T15:58:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229767"},"modified":"2022-11-09T16:17:59","modified_gmt":"2022-11-09T13:17:59","slug":"ajout-dattributs-dimage-wordpress-personnalises","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/ajout-dattributs-dimage-wordpress-personnalises\/","title":{"rendered":"Ajout d&rsquo;attributs d&rsquo;image WordPress personnalis\u00e9s"},"content":{"rendered":"<p>Quand il s&rsquo;agit de travailler avec <strong>the_content<\/strong>, c&rsquo;est simple.<\/p>\n<ol>\n<li>Configurez un filtre qui est accroch\u00e9 \u00e0 <strong>the_content,<\/strong><\/li>\n<li>d\u00e9finir une fonction qui accepte le contenu des messages entrants,<\/li>\n<li>apportez vos modifications,<\/li>\n<li>renvoie le contenu modifi\u00e9.<\/li>\n<\/ol>\n<p>Et la plupart du temps, c&rsquo;est tout ce qui est n\u00e9cessaire. Mais il y a des moments o\u00f9 vous voudrez peut-\u00eatre faire des choses plus avanc\u00e9es.<\/p>\n<p>Par exemple, vous souhaiterez peut-\u00eatre inclure le contenu d&rsquo;un <a href=\"https:\/\/tommcfarlin.com\/buffering-wordpress-content\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">mod\u00e8le externe<\/a>. Ou peut-\u00eatre voudrez-vous ajouter des attributs aux images que vous trouverez dans le message.<\/p>\n<p>Il peut \u00eatre difficile de le faire en utilisant une expression r\u00e9guli\u00e8re (car HTML est un langage non r\u00e9gulier) mais avec l&rsquo;aide de <a href=\"https:\/\/php.net\/manual\/en\/class.domdocument.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">DOMDocument<\/a> de PHP, ce n&rsquo;est pas si mal.<\/p>\n<p>L&rsquo;id\u00e9e derri\u00e8re ce code que je suis sur le point de montrer est la suivante:<\/p>\n<ol>\n<li>rechercher les balises <strong>img dans le message,<\/strong><\/li>\n<li>parcourir tout ce qui est trouv\u00e9,<\/li>\n<li>ajouter les attributs,<\/li>\n<li>enregistrer le HTML,<\/li>\n<li>retourner le r\u00e9sultat.<\/li>\n<\/ol>\n<p>Notez que vous devrez peut-\u00eatre ajuster cela en fonction de vos propres besoins, mais le code de base <a href=\"https:\/\/gist.github.com\/tommcfarlin\/52ba9093940abf03519d77cd17dfa257\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dont vous aurez besoin est<\/a>\u00a0:<\/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>Pour ceux qui ne connaissent pas DOMDocument et ce qui se passe dans le code ci-dessus (par exemple, pourquoi certaines fonctions sont appel\u00e9es avant de traiter le balisage), voici un bref aper\u00e7u\u00a0:<\/p>\n<ul>\n<li><strong>mb_convert_encode .Cela<\/strong> prendra le codage de caract\u00e8res des donn\u00e9es entrantes et le convertira en UTF-8 (bas\u00e9 sur le code ci-dessus, mais cela peut \u00eatre quelque chose de diff\u00e9rent).<\/li>\n<li><strong>libxml_use_internal_errors<\/strong>. Cela d\u00e9sactivera tout rapport d&rsquo;erreur et nous tous, en tant que programmeur, r\u00e9cup\u00e9rerons les erreurs par nous-m\u00eames.<\/li>\n<li><strong>utf8_decode.\u00a0<\/strong>Cela d\u00e9code les informations d&rsquo;une cha\u00eene de UTF-8 \u00e0 ISO-8859-1. La raison pour laquelle nous faisons cela est que la plupart des pages auront un jeu de caract\u00e8res d\u00e9fini comme ce dernier et nous avons besoin qu&rsquo;il soit cod\u00e9 sur le premier pour le traiter.<\/li>\n<\/ul>\n<p>Cela dit, je recommande \u00e9galement de lire sur DOMDocument pour plus d&rsquo;informations sur tout ce qui se passe ci-dessus.<\/p>\n<p>N\u00e9anmoins, une fois que vous utilisez la fonction comme ci-dessus, vous aurez un\u00a0 attribut d&rsquo; <strong>exemple de donn\u00e9es<\/strong> personnalis\u00e9 avec une valeur <strong>true<\/strong> sur les images tout au long de votre publication.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il y a des moments o\u00f9 vous voudrez peut-\u00eatre faire des choses plus avanc\u00e9es avec votre contenu, comme ajouter des attributs d&rsquo;image WordPress personnalis\u00e9s avec 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":[893,841,862],"tags":[1167],"class_list":["post-229767","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-2","category-tutoriels","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229767","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=229767"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229767\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/165834"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=229767"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=229767"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=229767"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}