{"id":230834,"date":"2022-12-09T19:43:00","date_gmt":"2022-12-09T16:43:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230834"},"modified":"2022-12-07T12:04:57","modified_gmt":"2022-12-07T09:04:57","slug":"menu-admin-wordpress-reorganisation-des-sous-menus","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/menu-admin-wordpress-reorganisation-des-sous-menus\/","title":{"rendered":"Menu Admin WordPress : R\u00e9organisation des sous-menus"},"content":{"rendered":"\n<p>L&rsquo;une des choses \u00e0 propos de l&rsquo;utilisation de l&rsquo;API de menu WordPress (c&rsquo;est-\u00e0-dire <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_menu_page\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">add_menu_page<\/a>, <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_submenu_page\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">add_submenu_page<\/a>, etc.) est qu&rsquo;elle ne facilite pas la r\u00e9organisation des \u00e9l\u00e9ments de sous-menu.<\/p>\n<p>Bien s\u00fbr, pour certaines choses comme les taxonomies ou des choses comme \u00e7a, vous pouvez simplement changer l&rsquo;ordre dans lequel elles sont enregistr\u00e9es. Mais disons que vous avez un menu d&rsquo;administration WordPress, puis quelques pages de sous-menu sous ce menu particulier.<\/p>\n<p>Par d\u00e9faut, WordPress cr\u00e9e le menu de niveau sup\u00e9rieur, puis il cr\u00e9e imm\u00e9diatement un \u00e9l\u00e9ment de sous-menu sous le menu de niveau sup\u00e9rieur qui renvoie \u00e0 la m\u00eame page. Dans de nombreux cas, cela peut \u00eatre id\u00e9al.<\/p>\n<p>Dans certains cas, cependant, vous voudrez peut-\u00eatre changer cela.<\/p>\n<h2>Menu d&rsquo;administration de WordPress<\/h2>\n<p>Pour donner un exemple de quand vous voudrez peut-\u00eatre changer quelque chose, cela pourrait \u00eatre quelque chose comme ceci :<\/p>\n<ul>\n<li>Vous disposez d&rsquo;un menu de niveau sup\u00e9rieur destin\u00e9 \u00e0 proposer des options apr\u00e8s la connexion \u00e0 une API tierce,<\/li>\n<li>L&rsquo;API tierce n\u00e9cessite une cl\u00e9 API (ou une autre authentification), vous devez donc d&rsquo;abord fournir des param\u00e8tres pour cela,<\/li>\n<li>Pourquoi ne pas d\u00e9finir le premier \u00e9l\u00e9ment de menu sur les param\u00e8tres et le deuxi\u00e8me \u00e9l\u00e9ment de menu sur les outils API\u00a0?<\/li>\n<\/ul>\n<p>Bien s\u00fbr, lorsque les param\u00e8tres n&rsquo;ont pas \u00e9t\u00e9 d\u00e9finis, il est utile d&rsquo;afficher \u00e9galement un message dans le menu principal des outils de l&rsquo;API indiquant que l&rsquo;utilisateur doit cliquer sur la page Param\u00e8tres pour entrer ses param\u00e8tres.<\/p>\n<p>Mais cela d\u00e9passe le cadre de cet article. Pour l&rsquo;instant, voici un moyen de g\u00e9rer la r\u00e9organisation du menu c\u00f4t\u00e9 serveur. D&rsquo;abord <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/f4a31feab1a5601496afa644f21e2956#file-00-reorder-submenu-items-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">le code<\/a><\/strong>, puis l&rsquo;explication.<\/p>\n<pre><code>&lt;?php\nadd_action('custom_menu_order', __NAMESPACE__.'acmeReorderSubmenuItems);\n\/**\n * Reorders the menu by placing the second item before the first item.\n *\/\nfunction acmeReorderSubmenuItems()\n{\n    global $submenu;\n    $newSubmenu = [];\n    foreach ($submenu as $menuName =&gt; $menuItems) {\n        if ('acme-api-tools' === $menuName) {\n            $newSubmenu[0] = $menuItems[1];\n            $newSubmenu[1] = $menuItems[0];\n            $submenu['acme-api-tools'] = $newSubmenu;\n            break;\n        }\n    }\n}<\/code><\/pre>\n<p>D&rsquo;une mani\u00e8re g\u00e9n\u00e9rale, j&rsquo;utilise ceci dans le contexte d&rsquo;un objet \u00e0 espace de noms, mais pour cet article, je le rel\u00e8gue \u00e0 une fonction qui existe dans un espace de noms.<\/p>\n<\/p>\n<p>Quelques points \u00e0 noter\u00a0:<\/p>\n<ul>\n<li>J&rsquo;utilise le crochet <a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Filter_Reference\/custom_menu_order\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">custom_menu_order<\/a> qui est un endroit id\u00e9al pour travailler sur les \u00e9l\u00e9ments de menu dans WordPress,<\/li>\n<li>Je recherche sp\u00e9cifiquement le sous-menu acme-api-tools dans la cl\u00e9 <strong>$menuName<\/strong> de la variable de tableau <strong>$ submenu ,<\/strong><\/li>\n<li>Je cr\u00e9e un tableau, <strong>$newSubmenu<\/strong>, puis \u00e9change les \u00e9l\u00e9ments et attribue le nouveau sous-menu au sous-menu existant identifi\u00e9 par la cl\u00e9.<\/li>\n<\/ul>\n<p>Il y a quelques commentaires \u2013 peut-\u00eatre m\u00eame des probl\u00e8mes (ou du moins des consid\u00e9rations s\u00e9rieuses) \u2013 avec cette approche.<\/p>\n<p>\u00c0 savoir, le code s&rsquo;attend \u00e0 conna\u00eetre pr\u00e9cis\u00e9ment la cl\u00e9 avec laquelle nous cherchons \u00e0 travailler. Dans certains cas, c&rsquo;est bien, mais si vous cherchez \u00e0 modifier un menu dont vous ne connaissez pas la cl\u00e9 (comme <strong>acme-api-tools<\/strong> ), vous devrez alors le modifier.<\/p>\n<p>Ensuite, cela suppose \u00e9galement qu&rsquo;il n&rsquo;y a que deux \u00e9l\u00e9ments de menu \u00e0 \u00e9changer. C&rsquo;est assez simple dans le cas ci-dessus, mais s&rsquo;il y en avait plus, vous auriez probablement besoin d&rsquo;une fonction pour g\u00e9rer le d\u00e9placement des \u00e9l\u00e9ments et renvoyer le nouveau tableau.<\/p>\n<h2>Assez pour commencer<\/h2>\n<p>Cela dit, la fonctionnalit\u00e9 ci-dessus devrait donner suffisamment d&rsquo;informations pour au moins comment commencer \u00e0 faire cela, sinon plus, et ensuite comment manipuler le tableau de sous-menu qui est visible<\/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>WordPress cr\u00e9e le menu de niveau sup\u00e9rieur, puis cr\u00e9e un \u00e9l\u00e9ment de sous-menu sous le menu de niveau sup\u00e9rieur qui renvoie \u00e0 la m\u00eame page. Vous voudrez peut-\u00eatre changer cela.<\/p>\n","protected":false},"author":1,"featured_media":236238,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[893,801,841,862],"tags":[1167],"class_list":["post-230834","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-2","category-php-3","category-tutoriels","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/230834","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=230834"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/230834\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/236238"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=230834"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=230834"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=230834"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}