{"id":234265,"date":"2023-02-24T09:00:00","date_gmt":"2023-02-24T06:00:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=234265"},"modified":"2022-11-12T02:50:43","modified_gmt":"2022-11-11T23:50:43","slug":"apprenez-a-ecrire-des-menu-walkers-pour-les-menus-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/apprenez-a-ecrire-des-menu-walkers-pour-les-menus-wordpress\/","title":{"rendered":"Apprenez \u00e0 \u00e9crire des menu walkers pour les menus WordPress"},"content":{"rendered":"\n<p>WordPress permet d&rsquo;utiliser des classes dites Walker pour parcourir et afficher des \u00e9l\u00e9ments dans une structure hi\u00e9rarchique. Dans cet article, nous apprendrons comment cr\u00e9er, impl\u00e9menter et personnaliser notre propre classe de marcheur pour personnaliser la sortie de notre menu.<\/p>\n<p>L&rsquo;utilisation la plus connue de la personnalisation avec les classes Walker dans WordPress concerne les menus, mais en r\u00e9alit\u00e9, WordPress utilise les classes Walker pour tout un tas de cas, par exemple la sortie de hi\u00e9rarchies de taxonomie, de hi\u00e9rarchies de commentaires <code>[wp_list_pages](https:\/\/developer.wordpress.org\/reference\/functions\/wp_list_pages\/)()<\/code>et de fichiers <code>[wp_list_categories](https:\/\/developer.wordpress.org\/reference\/functions\/wp_list_categories\/)()<\/code>. Ils \u00e9tendent tous une <code>Walker<\/code>classe g\u00e9n\u00e9rale. Nous allons \u00e9tendre le <code>Walker_Nav_Menu<\/code>qui est utilis\u00e9 pour les menus dans WordPress.<\/p>\n<p>Parce que nous \u00e9tendons une autre classe, nous n&rsquo;avons qu&rsquo;\u00e0 ajouter les fonctions que nous souhaitons remplacer. Si une fonction n&rsquo;existe pas dans notre classe, WordPress ex\u00e9cutera la fonction de la classe parente (la classe que nous \u00e9tendons) \u00e0 la place.<\/p>\n<h2>Pr\u00e9paration<\/h2>\n<p>Vous pouvez ajouter votre classe de marcheur dans vos fichiers de plug-in, vos th\u00e8mes <code>function.php<\/code>ou tout fichier PHP inclus par <code>functions.php<\/code>(pour un code plus propre). Vous commencez par d\u00e9finir votre classe par un nom de votre choix (assurez-vous que le nom de la classe est unique, et cela inclut les noms de classe possibles dans le noyau WordPress !) en \u00e9tendant <code>Walker_Nav_Menu<\/code>:<\/p>\n<pre><code>class AWP_Menu_Walker extends Walker_Nav_Menu {\n}<\/code><\/pre>\n<p>Afin de dire \u00e0 WordPress d&rsquo;utiliser notre marcheur, nous le d\u00e9finissons dans nos <code>[wp_nav_menu](https:\/\/developer.wordpress.org\/reference\/functions\/wp_nav_menu\/)()<\/code>appels. Cette fonction est responsable de la sortie d&rsquo;un menu et vous en avez probablement au moins un dans votre th\u00e8me pour le menu principal.<\/p>\n<p>Dans le tableau d&rsquo;arguments, <code>wp_nav_menu()<\/code>ajoutez un nouvel \u00e9l\u00e9ment avec la cl\u00e9 &lsquo;walker&rsquo; et cr\u00e9ez une nouvelle instance de votre classe walker comme ceci\u00a0:<\/p>\n<pre><code>wp_nav_menu([\n    'theme_location' =&gt; 'primary',\n    'menu_class' =&gt; 'main-menu',\n    'container' =&gt; 'nav',\n    'container_class' =&gt; 'header__main-nav',\n    'walker' =&gt; new AWP_Menu_Walker()\n]);<\/code><\/pre>\n<p>Si vous actualisez votre site, vous ne devriez voir aucun changement. En effet, notre classe ne remplace aucune des fonctions du parent, et donc WordPress ex\u00e9cute simplement les fonctions normales du marcheur de menu lors de la sortie du menu, tout comme avant nous lui avons dit d&rsquo;utiliser notre marcheur.<\/p>\n<h2>Vue d&rsquo;ensemble des fonctions que nous pouvons remplacer dans<code>Walker_Nav_Menu<\/code><\/h2>\n<p>Voici les fonctions que vous pouvez ajouter \u00e0 votre classe de marcheur personnalis\u00e9e pour remplacer les fonctions de la classe parentale<code>Walker_Nav_Menu<\/code>\u00a0:<\/p>\n<p>Les quatre premi\u00e8res sont des fonctions qui sont simplement responsables de la sortie, et elles n\u00e9cessitent toutes que vous ajoutiez \u00e0 une cha\u00eene &#8211; la premi\u00e8re variable de param\u00e8tre. Il est important de savoir que vous ne faites <code>echo<\/code>rien ici, tout est cens\u00e9 \u00eatre construit comme une cha\u00eene.<\/p>\n<h3>niveau_d\u00e9but<\/h3>\n<p>La fonction <code>start_lvl<\/code>est responsable de la sortie du HTML pour le d\u00e9but d&rsquo;un nouveau niveau. En bref, il devrait sortir le fichier <code>&lt;ul&gt;<\/code>.<\/p>\n<pre><code>function start_lvl(&amp;$output, $depth=0, $args=null) { }<\/code><\/pre>\n<p>Le premier param\u00e8tre, <code>$output<\/code>\u2013 pass\u00e9 par r\u00e9f\u00e9rence, est la cha\u00eene \u00e0 laquelle vous ajouterez votre sortie. <code>$depth<\/code>est un nombre entier indiquant \u00e0 quel niveau vous vous trouvez\u00a0; 0 pour le niveau sup\u00e9rieur, 1 pour l&rsquo;enfant direct du niveau sup\u00e9rieur, etc. <code>$args<\/code>est un objet de tous les arguments fournis dans <code>wp_nav_menu()<\/code>.<\/p>\n<h3>end_lvl<\/h3>\n<p>La <code>end_lvl<\/code>fonction est responsable de la sortie du HTML pour la fin d&rsquo;un niveau. Ce n&rsquo;est g\u00e9n\u00e9ralement que la fermeture <code>&lt;\/ul&gt;<\/code>.<\/p>\n<pre><code>function end_lvl(&amp;$output, $depth=0, $args=null) { }<\/code><\/pre>\n<p>Les param\u00e8tres sont exactement les m\u00eames que ci- <code>start_lvl<\/code>dessus.<\/p>\n<h3>start_el<\/h3>\n<p>Cette fonction est responsable de la sortie du code HTML de chaque \u00e9l\u00e9ment. En bref, il devrait afficher le d\u00e9but <code>&lt;li&gt;<\/code>et la <code>&lt;a&gt;<\/code>balise avec le titre du lien \u00e0 l&rsquo;int\u00e9rieur.<\/p>\n<pre><code>function start_el(&amp;$output, $item, $depth=0, $args=null, $id=0) { }<\/code><\/pre>\n<p>Le premier argument, <code>$output<\/code>, est comme d&rsquo;habitude la cha\u00eene \u00e0 laquelle vous ajouterez la sortie. Le deuxi\u00e8me argument, <code>$item<\/code>, est l&rsquo;objet de l&rsquo;\u00e9l\u00e9ment de menu &#8211; et c&rsquo;est l\u00e0 que vous r\u00e9cup\u00e9rerez la plupart des donn\u00e9es pour afficher l&rsquo;\u00e9l\u00e9ment de menu. Si le lien de menu est un \u00e9l\u00e9ment de menu de publication, vous obtiendrez l&rsquo;objet de publication ici. Quel que soit le type de menu, vous obtiendrez \u00e9galement des \u00e9l\u00e9ments utiles suppl\u00e9mentaires\u00a0; tels que <code>classes<\/code>, <code>url<\/code>, <code>title<\/code>et <code>description<\/code>.<\/p>\n<p>Le troisi\u00e8me argument, <code>$depth<\/code>, est un entier vous indiquant \u00e0 quel niveau nous sommes. Le niveau 0 est le niveau sup\u00e9rieur, le niveau 1 est l&rsquo;enfant direct du niveau sup\u00e9rieur, et ainsi de suite. Le quatri\u00e8me argument, <code>$args<\/code>, est un objet de tous les arguments fournis \u00e0 <code>wp_nav_menu()<\/code>. Le cinqui\u00e8me param\u00e8tre, <code>$id<\/code>, est l&rsquo;ID de l&rsquo;\u00e9l\u00e9ment de menu actuel.<\/p>\n<h3>end_el<\/h3>\n<p>La <code>end_el<\/code>fonction est responsable de la sortie de la fermeture d&rsquo;un \u00e9l\u00e9ment. Habituellement, il ne sortirait que la <code>&lt;\/li&gt;<\/code>balise.<\/p>\n<pre><code>function end_el(&amp;$output, $item, $depth=0, $args=null) { }<\/code><\/pre>\n<p>Les arguments pour <code>end_el<\/code>sont les m\u00eames que <code>start_el<\/code>ci-dessus sauf que la fonction n&rsquo;a pas le cinqui\u00e8me param\u00e8tre, <code>$id<\/code>.<\/p>\n<h3>display_element<\/h3>\n<p>La fonction <code>display_element<\/code>est une fonction h\u00e9rit\u00e9e de la <code>Walker<\/code>classe g\u00e9n\u00e9rale et est la fonction responsable de la travers\u00e9e. C&rsquo;est la fonction qui appelle tour \u00e0 tour toutes les fonctions ci-dessus.<\/p>\n<p>J&rsquo;inclus ceci ici parce que dans certains cas, par exemple si vous voulez emp\u00eacher de traverser une branche enti\u00e8re, vous utiliserez cette fonction pour cela.<\/p>\n<pre><code>function display_element($element, &amp;$children_elements, $max_depth, $depth, $args, &amp;$output) { }<\/code><\/pre>\n<p>Le premier argument, <code>$element<\/code>, est l&rsquo;objet de l&rsquo;\u00e9l\u00e9ment de menu &#8211; c&rsquo;est ce qui est transmis comme <code>$item<\/code>dans les fonctions ci-dessus. Le deuxi\u00e8me argument, <code>$children_elements<\/code>\u2013 pass\u00e9 par r\u00e9f\u00e9rence, contient tous les \u00e9l\u00e9ments enfants que cette fonction traversera. <code>$max_depth<\/code>, le troisi\u00e8me argument, est un entier qui signale la profondeur \u00e0 laquelle nous devons traverser, et le quatri\u00e8me argument, <code>$depth<\/code>, est la profondeur \u00e0 laquelle nous nous trouvons actuellement. Le cinqui\u00e8me argument, <code>$args<\/code>, est les arguments pass\u00e9s \u00e0 la fonction qui a appel\u00e9 le marcheur (pour les menus, ce seraient les arguments fournis \u00e0 <code>wp_nav_menu()<\/code>), et le dernier argument, <code>$output<\/code>&#8211; pass\u00e9 par r\u00e9f\u00e9rence, est la sortie qui est transmise comme premier argument dans tous des fonctions ci-dessus.<\/p>\n<h2>Modification de la sortie de chaque \u00e9l\u00e9ment<\/h2>\n<p>Dans l&rsquo;aper\u00e7u ci-dessus, vous devriez voir que la fonction <code>start_el()<\/code>est responsable de la sortie du HTML pour un seul \u00e9l\u00e9ment de menu. Commen\u00e7ons par remplacer cette fonction dans notre classe walker avec un exemple simple.<\/p>\n<h3>Exemple: emp\u00eacher l&rsquo;ajout de liens pour les \u00e9l\u00e9ments &lsquo;#&rsquo;<\/h3>\n<p>Assurons-nous que tous les <code>#<\/code>liens &lsquo; &lsquo; obtiennent un <code>&lt;span&gt;<\/code>\u00e9l\u00e9ment au lieu d&rsquo;une balise de lien, pour \u00e9viter de rafra\u00eechir la page.<\/p>\n<pre><code>class AWP_Menu_Walker extends Walker_Nav_Menu {\n    function start_el(&amp;$output, $item, $depth=0, $args=[], $id=0) {\n        $output .= \"&lt;li class='\". implode(\" \", $item-&gt;classes). \"'&gt;\";\n\u00a0\n        if ($item-&gt;url &amp;&amp; $item-&gt;url != '#') {\n            $output .= '&lt;a href=\"'. $item-&gt;url. '\"&gt;';\n        } else {\n            $output .= '&lt;span&gt;';\n        }\n\u00a0\n        $output .= $item-&gt;title;\n\u00a0\n        if ($item-&gt;url &amp;&amp; $item-&gt;url != '#') {\n            $output .= '&lt;\/a&gt;';\n        } else {\n            $output .= '&lt;\/span&gt;';\n        }\n    }\n}<\/code><\/pre>\n<p>Nous allons commencer l&rsquo;\u00e9l\u00e9ment en ajoutant une <code>&lt;li&gt;<\/code>balise \u00e0 <code>$output<\/code>. Nous voulons nous assurer que les classes par d\u00e9faut de WordPress (par exemple &lsquo;menu-item&rsquo;, &lsquo;menu-item-has-children&rsquo; etc.), ainsi que les classes saisies manuellement dans l&rsquo;\u00e9diteur de menu sont ajout\u00e9es \u00e0 notre \u00e9l\u00e9ment de liste. Nous collons les classes fournies sous forme de tableau en <code>$item-&gt;classes<\/code>utilisant la fonction PHP <code>[implode](https:\/\/www.php.net\/manual\/en\/function.implode.php)()<\/code>s\u00e9parant chaque \u00e9l\u00e9ment par un espace.<\/p>\n<p>Aux lignes #5-9 et #13-17, nous traitons la sortie conditionnelle de l&rsquo;\u00e9l\u00e9ment d&#8217;emballage. Nous produisons une <code>&lt;a&gt;<\/code>balise, sauf si l&rsquo;URL de l&rsquo;\u00e9l\u00e9ment est &lsquo; <code>#<\/code>&lsquo;, auquel cas nous fournissons une <code>&lt;span&gt;<\/code>balise \u00e0 la place. \u00c0 la ligne 11, nous sortons simplement le texte du lien, qui r\u00e9side dans <code>$item-&gt;title<\/code>.<\/p>\n<p>C&rsquo;est tout ce dont nous avons besoin pour nous assurer que tous les \u00e9l\u00e9ments de menu qui ont &lsquo; <code>#<\/code>&lsquo; comme URL ne sont pas cliquables\u00a0!<\/p>\n<p>Si vous faites cela dans un th\u00e8me stylis\u00e9, gardez \u00e0 l&rsquo;esprit que vous risquez de perdre du style si le th\u00e8me a <code>&lt;a&gt;<\/code>directement stylis\u00e9 la balise. Vous pouvez r\u00e9soudre ce probl\u00e8me en modifiant le style et \u00e9ventuellement en ajoutant une classe \u00e0 l&rsquo;\u00e9l\u00e9ment span.<\/p>\n<h3>Exemple: affichage des descriptions des \u00e9l\u00e9ments de menu<\/h3>\n<p>Par exemple, une autre chose que vous pouvez faire ici est de sortir la description du menu. Cela existe, mais n&rsquo;est pas activ\u00e9 par d\u00e9faut. Dans l&rsquo;\u00e9diteur de menu WordPress, vous devez cliquer sur &quot;Options d&rsquo;\u00e9cran&quot; en haut \u00e0 droite et cocher pour afficher &quot;Description&quot;:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151802-61e4cfd7d3371.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-151802-61e4cfd7d3371.png\" alt=\"Apprenez \u00e0 \u00e9crire des menu walkers pour les menus WordPress\" ><\/a><\/p>\n<p>Cela permet \u00e0 l&rsquo;utilisateur d&rsquo;entrer une description pour chaque \u00e9l\u00e9ment. Vous pouvez afficher cette description dans votre classe de marcheur. Supposons que vous souhaitiez uniquement afficher la description des \u00e9l\u00e9ments de niveau sup\u00e9rieur, car cela fait partie de la conception de votre th\u00e8me. Vous pouvez simplement v\u00e9rifier si le <code>$item<\/code>a une description et si <code>$depth<\/code>est 0, comme ceci :<\/p>\n<pre><code>        ...\n        $output .= $item-&gt;title;\n\u00a0\n        if ($depth == 0 &amp;&amp; !empty($item-&gt;description)) {\n            $output .= '&lt;span class=\"description\"&gt;'. $item-&gt;description. '&lt;\/span&gt;';\n        }\n        ...<\/code><\/pre>\n<h3>Exemple\u00a0: Ajouter des carets d\u00e9roulants<\/h3>\n<p>Un exemple plus courant et utile consiste \u00e0 ajouter un &quot;caret&quot;, une ic\u00f4ne qui signale que cet \u00e9l\u00e9ment de menu a un menu d\u00e9roulant (a des \u00e9l\u00e9ments enfants).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151802-61e4cfd965e21.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-151802-61e4cfd965e21.png\" alt=\"Apprenez \u00e0 \u00e9crire des menu walkers pour les menus WordPress\" ><\/a><\/p>\n<p>Exemple de carets en action &#8211; derri\u00e8re &quot;Blog&quot; et &quot;Actualit\u00e9s&quot;<\/p>\n<p>Vous aurez besoin de comprendre votre sortie HTML caret. Dans mon cas, je produis un <code>&lt;i&gt;<\/code>\u00e9l\u00e9ment avec des classes sp\u00e9cifiques pour une belle fl\u00e8che vers le bas disponible par la biblioth\u00e8que <a href=\"https:\/\/fontawesome.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Fontawesome<\/a> qui fournit des milliers d&rsquo;ic\u00f4nes. Vous voulez \u00e9galement vous assurer que ce caret ne sort que sur les \u00e9l\u00e9ments qui ont des enfants. Le meilleur moyen que j&rsquo;ai trouv\u00e9 pour d\u00e9terminer si l&rsquo;\u00e9l\u00e9ment actuel a des enfants est de r\u00e9f\u00e9rencer l&rsquo;objet walker (oui, qui est notre walker lui-m\u00eame, mais aussi les classes qu&rsquo;il \u00e9tend !) dans <code>$args<\/code>, et de v\u00e9rifier le boolean <code>has_children<\/code>. La sortie d&rsquo;un signe d&rsquo;insertion est aussi simple que\u00a0:<\/p>\n<pre><code>if ($args-&gt;walker-&gt;has_children) {\n    $output .= '&lt;i class=\"caret fa fa-angle-down\"&gt;&lt;\/i&gt;';\n}<\/code><\/pre>\n<p>La classe de marcheur compl\u00e8te ressemblerait \u00e0 ceci\u00a0:<\/p>\n<pre><code>class AWP_Menu_Walker extends Walker_Nav_Menu {\n    function start_el(&amp;$output, $item, $depth=0, $args=[], $id=0) {\n        $output .= \"&lt;li class='\". implode(\" \", $item-&gt;classes). \"'&gt;\";\n\u00a0\n        if ($item-&gt;url &amp;&amp; $item-&gt;url != '#') {\n            $output .= '&lt;a href=\"'. $item-&gt;url. '\"&gt;';\n        } else {\n            $output .= '&lt;span&gt;';\n        }\n\u00a0\n        $output .= $item-&gt;title;\n\u00a0\n        if ($item-&gt;url &amp;&amp; $item-&gt;url != '#') {\n            $output .= '&lt;\/a&gt;';\n        } else {\n            $output .= '&lt;\/span&gt;';\n        }\n\u00a0\n        if ($args-&gt;walker-&gt;has_children) {\n            $output .= '&lt;i class=\"caret fa fa-angle-down\"&gt;&lt;\/i&gt;';\n        }\n    }\n}<\/code><\/pre>\n<p>Et c&rsquo;est tout ce dont vous avez besoin pour vous assurer que votre menu re\u00e7oit de belles ic\u00f4nes de caret sur les \u00e9l\u00e9ments parents et que <code>#<\/code>les liens &lsquo; &lsquo; ne seront pas cliquables.<\/p>\n<p>Si vous souhaitez que l&rsquo;ic\u00f4ne caret change, par exemple en une fl\u00e8che vers le haut lorsque la liste d\u00e9roulante est active, vous devrez l&rsquo;ajouter avec Javascript \u00e0 votre th\u00e8me.<\/p>\n<p>Comme le sugg\u00e8rent les exemples ci-dessus, vous pouvez manipuler la sortie comme vous le souhaitez, en fonction de toutes les conditions. Vous pouvez par exemple modifier la sortie en fonction de la pr\u00e9sence d&rsquo;une certaine classe (par exemple une classe entr\u00e9e manuellement dans l&rsquo;\u00e9diteur de menu) en recherchant la classe dans <code>$item-&gt;classes<\/code>, ou vous pouvez manipuler (par exemple mettre en majuscule) le texte de l&rsquo;\u00e9l\u00e9ment fourni dans <code>$item-&gt;title<\/code>.<\/p>\n<h2>Apporter des arguments \u00e0 votre promeneur \u00e0 travers votre<code>wp_nav_menu<\/code><\/h2>\n<p>Je voudrais mentionner une autre chose utile. N&rsquo;oubliez pas que $args contient tous les arguments fournis \u00e0 <code>wp_nav_menu()<\/code>. Cela inclut par exemple <code>theme_location<\/code>et d&rsquo;autres, donc si vous ne pouvez modifier la sortie que pour des emplacements de th\u00e8me sp\u00e9cifiques &#8211; par exemple le menu principal. Mais vous pouvez en fait fournir n&rsquo;importe quel argument personnalis\u00e9\u00a0!<\/p>\n<p>Supposons que vous produisiez le m\u00eame menu plusieurs fois, par exemple une pour le bureau et une autre pour le mobile. Ou vous voulez que votre marcheur manipule les \u00e9l\u00e9ments uniquement lorsqu&rsquo;ils sont affich\u00e9s <code>wp_nav_menu()<\/code>dans votre th\u00e8me, et non lorsque le menu est ajout\u00e9 via un widget\u00a0? Peut-\u00eatre souhaitez-vous que votre d\u00e9ambulateur g\u00e8re la sortie diff\u00e9remment dans ces cas ?<\/p>\n<p>Vous pouvez fournir n&rsquo;importe quel argument personnalis\u00e9 \u00e0 <code>wp_nav_menu()<\/code>. Comme exemple simple, j&rsquo;ajouterai un bool\u00e9en &lsquo; <code>show_carets<\/code>&lsquo; aux arguments pour m&rsquo;assurer que les carets ne sont ajout\u00e9s que dans les cas o\u00f9 je les veux &#8211; au lieu que ma classe de marcheur ajoute des carets \u00e0 tous les menus.<\/p>\n<pre><code>wp_nav_menu([\n    'theme_location' =&gt; 'primary',\n    'menu_class' =&gt; 'main-menu',\n    'container' =&gt; 'nav',\n    'container_class' =&gt; 'header__main-nav',\n    'walker' =&gt; new AWP_Menu_Walker(),\n    'show_carets' =&gt; true\n]);<\/code><\/pre>\n<p>Ensuite, je peux simplement changer mon morceau de code d&rsquo;ajout de caret ci-dessus (ligne # 19-21) en v\u00e9rifiant si oui ou non <code>show_carets<\/code>est pr\u00e9sent et vrai dans <code>$args<\/code>, comme ceci:<\/p>\n<pre><code>if ($args-&gt;show_carets &amp;&amp; $args-&gt;walker-&gt;has_children) {\n    $output .= '&lt;i class=\"caret fa fa-angle-down\"&gt;&lt;\/i&gt;';\n}<\/code><\/pre>\n<p>Vous pouvez ajouter tous les arguments que vous souhaitez pour vous assurer que votre d\u00e9ambulateur ne personnalise que les menus que vous souhaitez. Par exemple, des bool\u00e9ens simples pour diff\u00e9rents cas, par exemple <code>is_mobile_menu<\/code>, ou tout ce dont vous avez besoin.<\/p>\n<p>Et c&rsquo;est \u00e0 peu pr\u00e8s tout. N&rsquo;h\u00e9sitez pas \u00e0 exp\u00e9rimenter et faites-moi savoir si vous avez des questions ou des suggestions ci-dessous\u00a0!<\/p>\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>Dans cet article, nous apprendrons comment cr\u00e9er, impl\u00e9menter et personnaliser notre propre classe de marcheur pour personnaliser notre sortie de menu dans WordPress.<\/p>\n","protected":false},"author":1,"featured_media":224083,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[915,893,893,915,1110,925,925,841,841,862,862],"tags":[1167,1167],"class_list":{"0":"post-234265","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-autre","8":"category-code-2","11":"category-n-a","12":"category-sujets","14":"category-tutoriels","16":"category-wordpress-3","18":"tag-affiai-fr"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/234265","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=234265"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/234265\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/224083"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=234265"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=234265"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=234265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}