{"id":234262,"date":"2023-02-23T10:03:00","date_gmt":"2023-02-23T07:03:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=234262"},"modified":"2022-11-12T02:43:03","modified_gmt":"2022-11-11T23:43:03","slug":"tutoriel-sur-le-theme-wordpress-pour-debutants-partie-9-menus-et-zones-de-widgets","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/tutoriel-sur-le-theme-wordpress-pour-debutants-partie-9-menus-et-zones-de-widgets\/","title":{"rendered":"Tutoriel sur le th\u00e8me WordPress pour d\u00e9butants \u2013 Partie 9 : Menus et zones de widgets"},"content":{"rendered":"\n<p>Cette le\u00e7on explique comment ajouter deux fonctionnalit\u00e9s principales de WordPress \u00e0 notre th\u00e8me\u00a0; menus et zones de widgets. Nous apprenons \u00e0 enregistrer un emplacement pour le menu de navigation principal d&rsquo;un site et \u00e0 afficher le menu dans nos mod\u00e8les, ainsi qu&rsquo;\u00e0 autoriser l&rsquo;ajout de widgets dans notre barre lat\u00e9rale et notre pied de page.<\/p>\n<p>Les passionn\u00e9s d&rsquo;entre vous ont peut-\u00eatre remarqu\u00e9 que ni les &quot;Menus&quot; ni les &quot;Widgets&quot; ne sont accessibles \u00e0 partir du menu &quot;Apparence&quot; dans le panneau d&rsquo;administration. C&rsquo;est parce que notre th\u00e8me ne les prend pas encore en charge. Nous allons corriger cela dans cette le\u00e7on &#8211; en commen\u00e7ant par les menus .<\/p>\n<h2>Menu WordPress<\/h2>\n<p>Il y a deux parties dans l&rsquo;ajout de menus dans votre th\u00e8me. Vous devez d&rsquo;abord d\u00e9finir un ou plusieurs emplacements de menu dans votre fichier <code>functions.php<\/code>. Un exemple est un menu principal qui sera dans l&rsquo;en-t\u00eate de toutes les pages. La deuxi\u00e8me partie consiste \u00e0 ajouter du code \u00e0 l&rsquo;endroit o\u00f9 vous souhaitez afficher le menu. Par exemple \u00e0 <code>header.php<\/code>l&rsquo;endroit o\u00f9 vous souhaitez placer le menu principal.<\/p>\n<h3>Enregistrement d&rsquo;un emplacement de menu<\/h3>\n<p>Dans ce didacticiel, nous ajouterons un emplacement de menu pour la navigation principale du site et placerons sa sortie dans notre fichier <code>header.php<\/code>. Commen\u00e7ons par enregistrer l&#8217;emplacement dans <code>functions.php<\/code>, ce qui se fait en utilisant la fonction <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_nav_menu\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">register_nav_menu<\/a> :<\/p>\n<pre><code>add_action('init', 'wptutorial_register_menu');\nfunction wptutorial_register_menu() {\n    register_nav_menu('main-nav', __('Main Navigation', 'wptutorial'));\n}<\/code><\/pre>\n<p>Nous devons nous accrocher au hook <code>init<\/code>, ce que WordPress a d\u00e9cid\u00e9 d&rsquo;\u00eatre un bon &quot;point de contr\u00f4le&quot; pour enregistrer les emplacements de menu. A l&rsquo;int\u00e9rieur de notre fonction nous appelons <code>register_nav_menu()<\/code>qui accepte un minimum de deux param\u00e8tres; la poign\u00e9e de menu qui est un slug unique que vous utiliserez comme identifiant lors du rendu du menu, et le nom visible du menu qui appara\u00eet dans le panneau d&rsquo;administration. Notez que j&rsquo;ai envelopp\u00e9 le nom \u00e0 l&rsquo;int\u00e9rieur <code>__()<\/code>afin de le rendre traduisible, comme nous l&rsquo;avons appris \u00e0 <a href=\"http:\/\/awhitepixel.com\/blog\/wordpress-theme-tutorial-for-beginners-part-8-translation-of-your-theme\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">l&rsquo;\u00e9tape pr\u00e9c\u00e9dente<\/a>.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151855-61e4d0df88967.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-151855-61e4d0df88967.png\" alt=\"Tutoriel sur le th\u00e8me WordPress pour d\u00e9butants \u2013 Partie 9 : Menus et zones de widgets\" ><\/a><\/p>\n<p>Si vous actualisez votre panneau d&rsquo;administration, vous devriez maintenant voir un nouvel \u00e9l\u00e9ment de sous-menu sous &quot;Apparence&quot;\u00a0; &quot;Menus&quot;. F\u00e9licitations, votre th\u00e8me prend d\u00e9sormais en charge la cr\u00e9ation de menus !<\/p>\n<p>Si vous n&rsquo;\u00eates pas familier avec la cr\u00e9ation et l&rsquo;administration de menus dans WordPress, <a href=\"https:\/\/wordpress.org\/support\/article\/appearance-menus-screen\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">c&rsquo;est un bon guide<\/a> pour vous.<\/p>\n<p>Cr\u00e9ez un nouveau menu dans &quot;Apparence &gt; Menus&quot; &#8211; il peut contenir tout ce que vous voulez, je viens d&rsquo;ajouter les messages factices que j&rsquo;avais cr\u00e9\u00e9s dans mon WordPress.<\/p>\n<p>Apr\u00e8s avoir enregistr\u00e9 votre premier menu, une nouvelle section intitul\u00e9e &quot;Param\u00e8tres du menu&quot; appara\u00eetra sous la zone d&rsquo;\u00e9dition de votre menu, ce qui vous permet de choisir un emplacement pour ce menu. Il doit r\u00e9pertorier un emplacement disponible, qui est celui que nous avons cr\u00e9\u00e9\u00a0; &quot;Navigation principale&quot;.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151855-61e4d0e03b2f8.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-151855-61e4d0e03b2f8.png\" alt=\"Tutoriel sur le th\u00e8me WordPress pour d\u00e9butants \u2013 Partie 9 : Menus et zones de widgets\" ><\/a><\/p>\n<p>Cochez la case \u00ab\u00a0Navigation principale\u00a0\u00bb et appuyez sur Enregistrer. Maintenant, votre menu nouvellement cr\u00e9\u00e9 est connect\u00e9 \u00e0 l&#8217;emplacement et s&rsquo;affichera automatiquement partout o\u00f9 vous ajouterez le code pour afficher cet emplacement de menu. Faisons cela maintenant.<\/p>\n<h3>Sortie d&rsquo;un emplacement de menu dans un mod\u00e8le<\/h3>\n<p>Ouvrez <code>header.php<\/code>et o\u00f9 que vous vouliez que la sortie du menu soit, ajoutez un appel \u00e0 <code>wp_nav_menu()<\/code>. Cette fonction accepte tout un tas d&rsquo;arguments dans un tableau pour vraiment personnaliser la sortie du menu. Plus important encore, nous avons besoin du param\u00e8tre qui lui indique de r\u00e9cup\u00e9rer l&#8217;emplacement &quot;Navigation principale&quot;. Pour ce faire, nous ajoutons l&rsquo;argument &lsquo; <code>theme_location<\/code>&lsquo; et le d\u00e9finissons sur le handle de notre menu\u00a0; &lsquo; <code>main-nav<\/code>&lsquo;.<\/p>\n<p>J&rsquo;ai ajout\u00e9 la sortie du menu juste apr\u00e8s le d\u00e9but de la <code>&lt;body&gt;<\/code>balise, mais si vous avez \u00e9toff\u00e9 vos mod\u00e8les avec du HTML, d\u00e9cidez vous-m\u00eame o\u00f9 vous voulez que le menu apparaisse.<\/p>\n<pre><code>...\n&lt;body &lt;?php body_class(); ?&gt;&gt;\n    &lt;nav class=\"main-nav\"&gt;&lt;?php wp_nav_menu(['theme_location' =&gt; 'main-nav']); ?&gt;&lt;\/nav&gt;<\/code><\/pre>\n<p>Actualisez votre interface et vous devriez voir le menu que vous avez cr\u00e9\u00e9 dans l&rsquo;administrateur sous forme de liste non ordonn\u00e9e au d\u00e9but du mod\u00e8le.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151855-61e4d0e11c102.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-151855-61e4d0e11c102.png\" alt=\"Tutoriel sur le th\u00e8me WordPress pour d\u00e9butants \u2013 Partie 9 : Menus et zones de widgets\" ><\/a><\/p>\n<p>Comme d&rsquo;habitude, je vous encourage \u00e0 creuser un peu plus dans les param\u00e8tres de la <code>wp_nav_menu<\/code>documentation <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_nav_menu\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPress Codex<\/a> et \u00e0 jouer avec la fa\u00e7on dont vous voulez que la sortie soit. Par exemple\u00a0: vous pouvez faire en sorte qu&rsquo;il ne sorte pas dans une liste HTML, vous pouvez limiter les \u00e9l\u00e9ments de menu \u00e0 certains niveaux uniquement (pour \u00e9viter les sous-menus), et plus encore.<\/p>\n<p>Si vous \u00eates curieux de conna\u00eetre la partie style; jetez un \u0153il aux classes que WordPress ajoute automatiquement \u00e0 chaque \u00e9l\u00e9ment de menu. Vous pourrez facilement ajouter des styles pour l&rsquo;\u00e9l\u00e9ment de menu actif, les \u00e9l\u00e9ments qui ont des \u00e9l\u00e9ments enfants, l&rsquo;\u00e9l\u00e9ment parent d&rsquo;un \u00e9l\u00e9ment enfant actif, etc.<\/p>\n<p>Remarque: Tout utilisateur de th\u00e8me peut toujours cr\u00e9er plusieurs menus et choisir de les afficher en dehors des emplacements enregistr\u00e9s d&rsquo;un th\u00e8me \u00e0 l&rsquo;aide de widgets. Cependant, pour ce faire, votre th\u00e8me doit d\u00e9finir certaines zones de widgets! Faisons cela ensuite.<\/p>\n<h2>Zones de widgets<\/h2>\n<p>Les zones de widget fonctionnent de mani\u00e8re assez similaire dans le fonctionnement des menus. Vous enregistrez un emplacement (pour les widgets, vous d\u00e9finissez une zone dans laquelle l&rsquo;utilisateur du th\u00e8me peut placer des widgets), et partout o\u00f9 vous souhaitez que l&#8217;emplacement\/la zone apparaisse dans vos mod\u00e8les, vous ajoutez un peu de code qui fait r\u00e9f\u00e9rence \u00e0 l&rsquo;identifiant de la poign\u00e9e que vous avez fourni dans votre code d&rsquo;enregistrement.<\/p>\n<p>D\u00e9finissons une zone de widget dans notre barre lat\u00e9rale et une dans le pied de page. Il est courant que les th\u00e8mes fournissent plusieurs zones de widgets dans le pied de page afin de les diviser en colonnes, mais dans ce didacticiel, nous en ajouterons simplement une au pied de page.<\/p>\n<p>Les zones de widgets sont appel\u00e9es &quot;barres lat\u00e9rales&quot; dans le code WordPress, mais ce n&rsquo;est pas exclusivement pour la barre lat\u00e9rale droite des sites Web. Il semble qu&rsquo;un nom h\u00e9rit\u00e9 soit rest\u00e9 \u00e0 une \u00e9poque o\u00f9 les sites Web n&rsquo;avaient g\u00e9n\u00e9ralement qu&rsquo;une zone de widgets dans la barre lat\u00e9rale. Ne pensez pas que les &quot;barres lat\u00e9rales&quot; ne peuvent faire r\u00e9f\u00e9rence qu&rsquo;aux barres lat\u00e9rales r\u00e9elles.<\/p>\n<h3>Enregistrer les zones de widget<\/h3>\n<p>Nous commen\u00e7ons par enregistrer deux zones de widgets dans notre fichier <code>functions.php<\/code>. Nous utilisons la fonction <code>register_sidebar<\/code>pour enregistrer nos barres lat\u00e9rales, accroch\u00e9es au <code>widgets_init<\/code>crochet, que WordPress a d\u00e9fini comme le meilleur crochet pour enregistrer les zones de widgets (et les widgets personnalis\u00e9s).<\/p>\n<pre><code>add_action('widgets_init', 'wptutorial_register_sidebar');\nfunction wptutorial_register_sidebar() {\n    register_sidebar([\n        'name' =&gt; __('Sidebar Widget Area', 'wptutorial'),\n        'id' =&gt; 'sidebar-area'\n    ]);\n    register_sidebar([\n        'name' =&gt; __('Footer Widget Area', 'wptutorial'),\n        'id' =&gt; 'footer-area'\n    ]);\n}<\/code><\/pre>\n<p>La <code>register_sidebar()<\/code>fonction accepte pas mal d&rsquo;arguments, au minimum vous avez besoin des arguments &lsquo;id&rsquo; et &lsquo;name&rsquo;. Il existe des param\u00e8tres disponibles pour d\u00e9finir comment vous voulez que les wrappers HTML du widget soient sortis.<\/p>\n<p>Actualisez votre panneau d&rsquo;administration et vous devriez maintenant voir l&rsquo;\u00e9l\u00e9ment de menu &quot;Widgets&quot; appara\u00eetre sous &quot;Apparence&quot;. Dans le panneau d&rsquo;administration &quot;Widgets&quot;, vous pouvez voir deux zones de widgets disponibles dans la zone de droite\u00a0; qui est notre &quot;Sidebar Widget Area&quot; et &quot;Footer Widget Area&quot;.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151855-61e4d0e22862e.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-151855-61e4d0e22862e.png\" alt=\"Tutoriel sur le th\u00e8me WordPress pour d\u00e9butants \u2013 Partie 9 : Menus et zones de widgets\" ><\/a><\/p>\n<p>Placez un widget au hasard dans notre barre lat\u00e9rale ou dans notre zone de widget de pied de page, juste pour que vous puissiez le voir en action.<\/p>\n<h3>Sortie d&rsquo;une zone de widget dans un mod\u00e8le<\/h3>\n<p>La derni\u00e8re partie est la sortie des zones de widgets dans nos mod\u00e8les. Pour ce faire, nous utilisons la fonction <code>dynamic_sidebar()<\/code>et fournissons le handle en tant que param\u00e8tre. Ouvrez <code>sidebar.php<\/code>et ajoutez ce qui suit \u00e0 l&rsquo;int\u00e9rieur des <code>&lt;aside&gt;<\/code>balises\u00a0:<\/p>\n<pre><code>&lt;aside class=\"sidebar\"&gt;\n    &lt;ul&gt;&lt;?php dynamic_sidebar('sidebar-area'); ?&gt;&lt;\/ul&gt;\n&lt;\/aside&gt;<\/code><\/pre>\n<p>Notez que je l&rsquo;ai envelopp\u00e9 dans une balise de liste non ordonn\u00e9e (<code>&lt;ul&gt;<\/code>). En effet, par d\u00e9faut, <code>dynamic_sidebar<\/code>tous les widgets sont envelopp\u00e9s dans <code>&lt;li&gt;<\/code>des \u00e9l\u00e9ments. Je vous encourage \u00e0 jouer avec les param\u00e8tres de sortie si vous n&rsquo;aimez pas que les widgets soient une liste.<\/p>\n<p>Quant au pied de page, nous l&rsquo;ajoutons au tout d\u00e9but de <code>footer.php<\/code>, entour\u00e9 d&rsquo;une <code>&lt;footer&gt;<\/code>balise (si vous le souhaitez).<\/p>\n<pre><code>    &lt;footer&gt;\n        &lt;ul&gt;&lt;?php dynamic_sidebar('footer-area'); ?&gt;&lt;\/ul&gt;\n    &lt;\/footer&gt;\n    &lt;?php wp_footer(); ?&gt;\n...<\/code><\/pre>\n<p>C&rsquo;est tout pour les menus et les zones de widgets. Votre th\u00e8me offre d\u00e9sormais \u00e0 l&rsquo;utilisateur la possibilit\u00e9 de cr\u00e9er un nouveau menu et d&rsquo;utiliser un widget pour l&rsquo;afficher dans la barre lat\u00e9rale ou le pied de page. Dans la <a href=\"http:\/\/awhitepixel.com\/blog\/wordpress-theme-tutorial-for-beginners-part-10-fleshing-out-templates\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">prochaine le\u00e7on<\/a> de cette s\u00e9rie de didacticiels, nous allons cr\u00e9er d&rsquo;autres mod\u00e8les pour notre th\u00e8me.<\/p>\n<h2>Documentation sur les m\u00e9thodes utilis\u00e9es<\/h2>\n<ul>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_action\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">add_action<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_nav_menu\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">registre_nav_menu<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_nav_menu\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_nav_menu<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_sidebar\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">registre_sidebar<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/dynamic_sidebar\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">barre lat\u00e9rale dynamique<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cette le\u00e7on explique comment ajouter des menus de navigation en enregistrant l&#8217;emplacement du menu, ainsi qu&rsquo;en enregistrant et en pla\u00e7ant une zone de widget dans WordPress.<\/p>\n","protected":false},"author":1,"featured_media":224072,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[893,893,717,717,832,1110,748,748,832,925,925,841,841,862,862],"tags":[1167],"class_list":["post-234262","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-2","category-developpeur","category-guide-pour-les-debutants","category-n-a","category-open-source-projektmanagement-2","category-sujets","category-tutoriels","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/234262","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=234262"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/234262\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/224072"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=234262"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=234262"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=234262"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}