{"id":231896,"date":"2023-01-04T12:25:00","date_gmt":"2023-01-04T09:25:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231896"},"modified":"2022-11-10T05:38:10","modified_gmt":"2022-11-10T02:38:10","slug":"sur-les-fonctions-et-les-plugins-indispensables","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/sur-les-fonctions-et-les-plugins-indispensables\/","title":{"rendered":"Sur les fonctions et les plugins indispensables"},"content":{"rendered":"\n<p>J&rsquo;ai travaill\u00e9 sur un petit projet, plus une application Web qu&rsquo;un site, qui n\u00e9cessitait le d\u00e9veloppement \u00e0 la fois d&rsquo;un th\u00e8me personnalis\u00e9 et de fonctionnalit\u00e9s \u00e9troitement coupl\u00e9es, mais tr\u00e8s sp\u00e9cifiques.<\/p>\n<p>Il s&rsquo;agit d&rsquo;un projet tr\u00e8s cibl\u00e9 (dont je parlerai probablement \u00e0 un moment donn\u00e9 dans le futur) mais en y travaillant, cela m&rsquo;a oblig\u00e9 \u00e0 revenir un peu sur l&rsquo;aspect d\u00e9veloppement de th\u00e8me du d\u00e9veloppement WordPress.<\/p>\n<p>Non, je ne fais aucune conception \u2013 heureusement \u2013 \u200b\u200bmais je dois travailler sur les personnalisations de th\u00e8me d&rsquo;un point de vue fonctionnel. Ce faisant, cependant, cela m&rsquo;a fait revoir les consid\u00e9rations requises <code>functions.php<\/code>et certaines consid\u00e9rations que je n&rsquo;avais jamais eues auparavant.<\/p>\n<p>De plus, cela m&rsquo;a amen\u00e9 \u00e0 regarder plus profond\u00e9ment l&rsquo;utilisation de <code>mu-plugins<\/code>et \u00e0 me demander quand ils sont n\u00e9cessaires et pourquoi je ne les ai pas utilis\u00e9s plus dans le pass\u00e9 (ou m\u00eame quand on aurait vraiment besoin de les utiliser).<\/p>\n<p>Je vais donc \u00eatre un peu po\u00e9tique \u00e0 ce sujet.<\/p>\n<pre><code>TL;DR<\/code><\/pre>\n<p>Quand je faisais du d\u00e9veloppement de th\u00e8me, <code>functions.php<\/code>a \u00e9t\u00e9 utilis\u00e9 pour deux choses (ce qui est probl\u00e9matique en soi) mais quand m\u00eame :<\/p>\n<ol>\n<li>pour activer ou d\u00e9sactiver des fonctionnalit\u00e9s dans les th\u00e8mes,<\/li>\n<li>pour d\u00e9finir les fonctionnalit\u00e9s sp\u00e9cifiques au th\u00e8me.<\/li>\n<\/ol>\n<p>Le <a href=\"https:\/\/developer.wordpress.org\/themes\/basics\/theme-functions\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">manuel du d\u00e9veloppeur de th\u00e8mes<\/a> indique\u00a0:<\/p>\n<blockquote>\n<p>Le <code>functions.php<\/code>fichier est l&rsquo;endroit o\u00f9 vous ajoutez des fonctionnalit\u00e9s uniques \u00e0 votre th\u00e8me WordPress. Il peut \u00eatre utilis\u00e9 pour se connecter aux fonctions de base de WordPress pour rendre votre th\u00e8me plus modulaire, extensible et fonctionnel.<\/p>\n<p>Fonctions de th\u00e8me, Manuel du d\u00e9veloppeur de th\u00e8me<\/p>\n<\/blockquote>\n<p>Et je comprends, mais de mon point de vue et au fur et \u00e0 mesure que WordPress a \u00e9volu\u00e9, je pense que cela <code>functions.php<\/code>devrait \u00eatre d\u00e9di\u00e9 aux fonctionnalit\u00e9s sp\u00e9cifiques au th\u00e8me en termes de choses qui s&rsquo;accrochent directement au noyau comme :<\/p>\n<ul>\n<li>fonctionnalit\u00e9 de personnalisation,<\/li>\n<li>fonctionnalit\u00e9 des menus,<\/li>\n<li>enregistrement du script et du style,<\/li>\n<li>etc.<\/li>\n<\/ul>\n<p>Mais s&rsquo;il y a quelque chose qui doit s&rsquo;ex\u00e9cuter pendant l&rsquo;un des crochets et que cela correspond davantage \u00e0 une logique sp\u00e9cifique au domaine, alors cela n&rsquo;appartient <strong>pas<\/strong> \u00e0 ce fichier.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158759-61e6e52f7b3b5.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-158759-61e6e52f7b3b5.png\" alt=\"Sur les fonctions et les plugins indispensables\" ><\/a><\/p>\n<p>Cela soul\u00e8ve cependant une question\u00a0: o\u00f9 r\u00e9sident les fonctionnalit\u00e9s sp\u00e9cifiques \u00e0 un domaine\u00a0?<\/p>\n<h3>Entrez les plugins indispensables<\/h3>\n<p>Je sais que des choses comme les <code>inc<\/code>r\u00e9pertoires deviennent de plus en plus courantes, mais je ne m&rsquo;en soucie pas lorsque je parle de d\u00e9veloppement de th\u00e8mes, en particulier lorsque le d\u00e9veloppement de th\u00e8mes n&rsquo;est pas mon objectif et que cette structure de r\u00e9pertoire particuli\u00e8re n&rsquo;est pas mon style.<\/p>\n<p>Quoi qu&rsquo;il en soit, lorsqu&rsquo;il s&rsquo;agit de solutions hautement sp\u00e9cialis\u00e9es (o\u00f9 une solution est une combinaison de pr\u00e9sentation et de fonctionnalit\u00e9s \u00e9troitement cibl\u00e9es), je commence \u00e0 penser \u00e0 <code>mu-plugins<\/code>.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158759-61e6e536dbfe7.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-158759-61e6e536dbfe7.png\" alt=\"Sur les fonctions et les plugins indispensables\" ><\/a><\/p>\n<p>Et la raison pour laquelle je ne pense pas \u00e0 un plugin WordPress standard est qu&rsquo;ils sont g\u00e9n\u00e9ralement con\u00e7us pour fonctionner avec n&rsquo;importe quel th\u00e8me et pour ajouter des fonctionnalit\u00e9s. Ce n&rsquo;est pas le cas avec <code>mu-plugins<\/code>.<\/p>\n<blockquote>\n<p>Les plugins indispensables (alias mu-plugins) sont des plugins install\u00e9s dans un r\u00e9pertoire sp\u00e9cial \u00e0 l&rsquo;int\u00e9rieur du dossier de contenu et qui sont automatiquement activ\u00e9s sur tous les sites de l&rsquo;installation.<\/p>\n<p><a href=\"https:\/\/wordpress.org\/support\/article\/must-use-plugins\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Plugins indispensables<\/a>, WordPress.org<\/p>\n<\/blockquote>\n<p>Voici donc ma d\u00e9marche de r\u00e9flexion :<\/p>\n<ol>\n<li>Les th\u00e8mes sont pour la pr\u00e9sentation<\/li>\n<li>Les plugins sont pour la fonctionnalit\u00e9.<\/li>\n<li>Les plugins sont con\u00e7us pour \u00eatre utilis\u00e9s ind\u00e9pendamment d&rsquo;un th\u00e8me et sur l&rsquo;ensemble d&rsquo;un site.<\/li>\n<li>Les plugins indispensables sont des plugins activ\u00e9s et utilis\u00e9s par d\u00e9faut<\/li>\n<li>Par cons\u00e9quent, la logique sp\u00e9cifique au domaine d&rsquo;une solution sp\u00e9cialis\u00e9e doit r\u00e9sider dans un plug-in indispensable.<\/li>\n<\/ol>\n<p>Bien s\u00fbr, on peut affirmer que certains th\u00e8mes peuvent n\u00e9cessiter des fonctionnalit\u00e9s indispensables, mais cela ne correspond-il pas toujours \u00e0 l&rsquo;id\u00e9e que la fonctionnalit\u00e9 devrait r\u00e9sider dans un plugin indispensable ?<\/p>\n<p>Quoi qu&rsquo;il en soit, l&rsquo;approche que j&rsquo;ai suivie est la suivante:<\/p>\n<ol>\n<li>La fonctionnalit\u00e9 qui associe sp\u00e9cifiquement les fonctionnalit\u00e9s du th\u00e8me au noyau de WordPress va dans <code>functions.php<\/code>.<\/li>\n<li>La fonctionnalit\u00e9 qui est logique de domaine mais qui n\u00e9cessite que la solution enti\u00e8re fonctionne r\u00e9side dans un fichier <code>mu-plugin<\/code>.<\/li>\n<\/ol>\n<p>\u00c0 ce stade <a href=\"https:\/\/tommcfarlin.com\/from-self-employment-to-employment-in-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">de ma carri\u00e8re<\/a>, je ne fais pas beaucoup de travail qui se concentre sur autre chose que le backend, mais dans les rares occasions que j&rsquo;ai d&rsquo;\u00e9largir le travail que je fais, je trouve que j&rsquo;essaie toujours d&rsquo;\u00eatre aussi analytique et r\u00e9fl\u00e9chi sur la fa\u00e7on dont je construis le projet.<\/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>Les fonctions et les plugins indispensables m\u00e9ritent d&rsquo;\u00eatre pris en compte, en particulier lors de la cr\u00e9ation de solutions hautement sp\u00e9cialis\u00e9es.<\/p>\n","protected":false},"author":1,"featured_media":158760,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[915,893,717,801,841,862],"tags":[1167],"class_list":["post-231896","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-autre","category-code-2","category-developpeur","category-php-3","category-tutoriels","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/231896","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=231896"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/231896\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/158760"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=231896"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=231896"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=231896"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}