{"id":229777,"date":"2022-11-13T10:50:00","date_gmt":"2022-11-13T07:50:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229777"},"modified":"2022-11-09T16:20:32","modified_gmt":"2022-11-09T13:20:32","slug":"ajout-de-dialogues-modaux-wordpress-avec-bibliotheques-integrees","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/ajout-de-dialogues-modaux-wordpress-avec-bibliotheques-integrees\/","title":{"rendered":"Ajout de dialogues modaux WordPress (avec biblioth\u00e8ques int\u00e9gr\u00e9es)"},"content":{"rendered":"\n<p>Chaque fois qu&rsquo;il s&rsquo;agit de d\u00e9velopper des solutions pour les clients, il y aura des moments o\u00f9 vous serez probablement charg\u00e9 d&rsquo;afficher des informations dans les bo\u00eetes de dialogue modales de WordPress.<\/p>\n<p>Il existe de nombreuses solutions disponibles pour ce faire et plus vous \u00eates familiaris\u00e9 avec JavaScript, les diff\u00e9rentes biblioth\u00e8ques et les biblioth\u00e8ques dont elles disposent, plus il est difficile (ou peut-\u00eatre m\u00eame plus facile) de choisir laquelle utiliser.<\/p>\n<p>Mais WordPress a une infrastructure int\u00e9gr\u00e9e qui rend simple l&rsquo;int\u00e9gration de fonctionnalit\u00e9s dans WordPress. Donc, dans trois articles \u00e0 venir, je couvrirai les points suivants\u00a0:<\/p>\n<ol>\n<li>Comment incorporer des bo\u00eetes de dialogue modales WordPress \u00e0 l&rsquo;aide de biblioth\u00e8ques int\u00e9gr\u00e9es,<\/li>\n<li>Remplir les dialogues modaux avec des donn\u00e9es,<\/li>\n<li>Remplir la bo\u00eete de dialogue modale avec des donn\u00e9es dynamiques via Ajax.<\/li>\n<\/ol>\n<p>En raison de la nature de la s\u00e9rie, les publications ne seront pas cons\u00e9cutives, mais elles utiliseront toutes une balise unique que vous pourrez utiliser pour ajouter un signet et faire r\u00e9f\u00e9rence \u00e0 une s\u00e9rie une fois les publications termin\u00e9es.<\/p>\n<p>Cela dit, parlons de l&rsquo;int\u00e9gration facile des bo\u00eetes de dialogue modales WordPress avec des biblioth\u00e8ques int\u00e9gr\u00e9es.<\/p>\n<h2>Dialogues modaux WordPress, partie 1<\/h2>\n<p>Pour commencer, je suppose que vous avez mis en place les bases d&rsquo;une page d&rsquo;administration.<\/p>\n<h3>Sur les pages de plugins<\/h3>\n<p>Autrement dit, vous avez tout ce dont vous avez besoin pour obtenir une configuration de plugin, activ\u00e9e, puis une page affich\u00e9e via un menu ou un sous-menu.<\/p>\n<p>Si ce n&rsquo;est pas le cas, consultez <a href=\"https:\/\/tommcfarlin.com\/wordpress-menu-page\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cet article<\/a> pour savoir comment commencer.<\/p>\n<p>Une fois que vous avez fait cela, vous aurez besoin de l&rsquo;infrastructure de base pour une page de plugin. Cette page peut \u00eatre utilis\u00e9e pour afficher simplement des informations ou elle peut \u00eatre utilis\u00e9e \u00e0 la fois pour afficher des informations et donner \u00e0 l&rsquo;utilisateur la possibilit\u00e9 d&rsquo;enregistrer des options.<\/p>\n<p>Pour ce tutoriel, je ne suis pas particuli\u00e8rement int\u00e9ress\u00e9 \u00e0 donner \u00e0 l&rsquo;utilisateur la possibilit\u00e9 d&rsquo;enregistrer des options. Au lieu de cela, nous devons cr\u00e9er une ancre qui affichera une bo\u00eete de dialogue modale \u00e0 chaque clic.<\/p>\n<p>Et les donn\u00e9es qu&rsquo;il contiendra seront couvertes dans un tutoriel ult\u00e9rieur.<\/p>\n<h3>Un exemple de page de plugin<\/h3>\n<p>\u00c0 ce stade, je suppose que vous avez une page de plugin. Une structure de base pour cela peut ressembler <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1db21634b8b7a88a963b3875553d2539#file-00-basic-plugin-page-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">\u00e0 ceci<\/a> :<\/p>\n<pre><code>&lt;?php\n\/**\n * A basic plugin page that will eventually be used to demonstrate how to use the\n * Thickbox library included with WordPress.\n *\n * @package Acme\n *\/\n?&gt;\n\n&lt;div id=\"acme-thickbox-demo\" class=\"wrap\"&gt;\n  &lt;!-- TODO --&gt;\n&lt;\/div&gt;&lt;!-- #acme-thickbox-demo --&gt;<\/code><\/pre>\n<p>A partir de l\u00e0, deux choses sont n\u00e9cessaires :<\/p>\n<ol>\n<li>incorporant la biblioth\u00e8que Thickbox<\/li>\n<li>ajouter une ancre et un conteneur qui affichera une bo\u00eete de dialogue modale<\/li>\n<\/ol>\n<p>Pour int\u00e9grer la biblioth\u00e8que Thickbox dans votre page de plugin, ajoutez simplement cette balise. Si vous suivez des normes de codage, votre page a probablement un docblock en haut de la page. C&rsquo;est l\u00e0 que j&rsquo;ajoute normalement le code.<\/p>\n<p>La\u00a0 fonction <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_thickbox\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">add_thickbox<\/a> est celle fournie par WordPress qui fait ce qui suit :<\/p>\n<blockquote>\n<p>Met en file d&rsquo;attente les js et css ThickBox par d\u00e9faut.<\/p>\n<\/blockquote>\n<p>Un peu vague, non? Techniquement, la description plus longue est\u00a0:<\/p>\n<blockquote>\n<p>ThickBox est un widget de dialogue d&rsquo;interface utilisateur de page Web \u00e9crit en JavaScript au-dessus de la biblioth\u00e8que jQuery. Sa fonction est d&rsquo;afficher une seule image, plusieurs images, du contenu en ligne, du contenu iframe ou du contenu diffus\u00e9 via AJAX dans un mode hybride.<\/p>\n<\/blockquote>\n<p>Et si vous \u00eates int\u00e9ress\u00e9 par la biblioth\u00e8que Thickbox seule, vous pouvez la voir sur <a href=\"http:\/\/codylindley.com\/thickbox\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cette page<\/a>.<\/p>\n<p>Quoi qu&rsquo;il en soit, retour \u00e0 la page. Maintenant que je l&rsquo;ajoute \u00e0 ma page de plugin en utilisant la fonction API de WordPress, ma page ressemble <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1db21634b8b7a88a963b3875553d2539#file-01-thickbox-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">\u00e0 ceci<\/a> :<\/p>\n<pre><code>&lt;?php\n\/**\n * A basic plugin page that will eventually be used to demonstrate how to use the\n * Thickbox library included with WordPress.\n *\n * @package Acme\n *\/\nadd_thickbox();\n?&gt;\n\n&lt;div id=\"acme-thickbox-demo\" class=\"wrap\"&gt;\n  &lt;!-- TODO --&gt;\n&lt;\/div&gt;&lt;!-- #acme-thickbox-demo --&gt;<\/code><\/pre>\n<p>Ensuite, la cr\u00e9ation de l&rsquo;ancre et de l&rsquo;\u00e9l\u00e9ment d&rsquo;affichage des donn\u00e9es va de pair, notamment parce que l&rsquo;ancre a besoin de l&rsquo;ID de l&rsquo;\u00e9l\u00e9ment qui servira de dialogue modal.<\/p>\n<p>L&rsquo;ancre a besoin des informations suivantes\u00a0:<\/p>\n<ul>\n<li>l&rsquo;ID de l&rsquo;\u00e9l\u00e9ment qui affichera le modal,<\/li>\n<li>les dimensions dudit dialogue modal<\/li>\n<\/ul>\n<p>Pour cet exemple, je vais configurer une bo\u00eete de dialogue qui s&rsquo;affiche \u00e0 800 \u00d7 600 pixels et elle aura l&rsquo;ID de <strong>acme-modal-dialog<\/strong>.<\/p>\n<p><strong>Note<\/strong>: N&rsquo;oubliez pas que c&rsquo;est une bonne id\u00e9e de pr\u00e9fixer vos \u00e9l\u00e9ments avec quelque chose li\u00e9 au nom de votre plugin, afin qu&rsquo;aucun conflit ne se produise.<\/p>\n<p>Je vais donc cr\u00e9er une ancre qui <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1db21634b8b7a88a963b3875553d2539#file-02-adding-an-anchor-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ressemble \u00e0 ceci<\/a> :<\/p>\n<pre><code>&lt;?php\n\/**\n * A basic plugin page that will eventually be used to demonstrate how to use the\n * Thickbox library included with WordPress.\n *\n * @package Acme\n *\/\nadd_thickbox();\n?&gt;\n\n&lt;div id=\"acme-thickbox-demo\" class=\"wrap\"&gt;\n\n  &lt;h1&gt;Acme Thickbox Demo&lt;\/h1&gt;\n  &lt;p&gt;Provides an exmaple of how to use the thickbox library within a WordPress plugin page.&lt;\/p&gt;\n\n  &lt;div id=\"acme-thickbox-content\"&gt;\n    &lt;a href=\"#\"&gt;Display The Dialog&lt;\/a&gt;\n  &lt;\/div&gt;&lt;!-- #acme-thickbox-content --&gt;\n\n&lt;\/div&gt;&lt;!-- #acme-thickbox-demo --&gt;<\/code><\/pre>\n<p>Et puis je vais cr\u00e9er un \u00e9l\u00e9ment <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1db21634b8b7a88a963b3875553d2539#file-03-adding-the-modal-dialog-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">comme celui<\/a> -ci :<\/p>\n<pre><code>&lt;?php\n\/**\n * A basic plugin page that will eventually be used to demonstrate how to use the\n * Thickbox library included with WordPress.\n *\n * @package Acme\n *\/\nadd_thickbox();\n?&gt;\n\n&lt;div id=\"acme-thickbox-demo\" class=\"wrap\"&gt;\n\n  &lt;h1&gt;Acme Thickbox Demo&lt;\/h1&gt;\n  &lt;p&gt;Provides an exmaple of how to use the thickbox library within a WordPress plugin page.&lt;\/p&gt;\n\n  &lt;div id=\"acme-thickbox-content\"&gt;\n    &lt;a href=\"TB_inline?width=600&amp;height=550&amp;inlineId=acme-modal-dialog\" class=\"thickbox\"&gt;Display The Dialog&lt;\/a&gt;\n    &lt;div id=\"acme-modal-dialog\" style=\"display:none;\"&gt;&lt;\/div&gt;&lt;!-- #acme-modal-dialog --&gt;\n  &lt;\/div&gt;&lt;!-- #acme-thickbox-content --&gt;\n\n&lt;\/div&gt;&lt;!-- #acme-thickbox-demo --&gt;<\/code><\/pre>\n<p>Et le code ci-dessus est \u00e0 quoi ressemblera \u00e9galement la version finale de la page du plugin. Lorsque vous cliquez sur l&rsquo;ancre, une bo\u00eete de dialogue vide doit appara\u00eetre avec les dimensions sp\u00e9cifi\u00e9es (c&rsquo;est-\u00e0-dire 800 \u00d7 600 pixels).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165812-61e789a51e4aa.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165812-61e789a51e4aa.png\" alt=\"Ajout de dialogues modaux WordPress (avec biblioth\u00e8ques int\u00e9gr\u00e9es)\" ><\/a><\/p>\n<p>Bien s\u00fbr, il sera vide en ce sens qu&rsquo;il n&rsquo;affichera aucune donn\u00e9e.<\/p>\n<h2>Affichage des donn\u00e9es<\/h2>\n<p>Dans le prochain article de la s\u00e9rie, j&rsquo;expliquerai comment afficher les donn\u00e9es dans le contexte de la bo\u00eete de dialogue.<\/p>\n<p>C&rsquo;est facile, mais c&rsquo;est un bon point de d\u00e9part si vous cherchez \u00e0 commencer \u00e0 incorporer des donn\u00e9es dynamiques via l&rsquo;API REST ou Ajax. Mais je couvrirai cela avant la fin de ceci.<\/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>Lorsqu&rsquo;il s&rsquo;agit de d\u00e9velopper des solutions pour les clients, il y aura des moments o\u00f9 vous serez probablement charg\u00e9 d&rsquo;afficher des informations dans les bo\u00eetes de dialogue modales de WordPress.<\/p>\n","protected":false},"author":1,"featured_media":165813,"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-229777","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\/229777","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=229777"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229777\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/165813"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=229777"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=229777"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=229777"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}