web-dev-qa-db-fra.com

Par programme (PHP), obtenez le n °. dans le menu de navigation principal

J'ai besoin d'obtenir le numéro. d'éléments dans le menu de navigation principal. J'ai besoin de cela pour déterminer la largeur en pourcentage de chaque élément de la liste. Donc, je dois aussi changer/ajouter à l'attribut css width des éléments de la liste d'une manière ou d'une autre, ce que je n'ai pas encore compris comment le faire non plus ... D'abord, j'ai essayé la fonction wp_get_nav_menu_object . Je développe un thème pour enfants à partir du modèle vingt-quinze. J'ai créé une page d'accueil personnalisée dans laquelle je charge la navigation principale (copiée directement à partir du fichier sidebar.php du dossier du thème d'origine), puis j'appelle wp_get_nav_menu_object tout de suite après à l'aide de l'extrait de code.

<?php if (has_nav_menu('primary')) : ?>   
   <nav id="site-navigation" class="main-navigation" role="navigation">
      <?php
       // Primary navigation Menu
       wp_nav_menu(array(
         'menu_class' => 'nav-menu',
         'theme_location' => 'primary',
       ));
       // none of these seem to work...
       //$menu = wp_get_nav_menu_object('menu-primary-menu');
       $menu = wp_get_nav_menu_object('primary');
       echo $menu->count;
     ?>   
   </nav> <!-- /.main-navigation --> 
<?php endif; ?>

Je sais que je pourrais utiliser une solution jQuery/JavaScript (ce que je suis en train de faire en ce moment), mais ce n'est pas idéal. Je commence à soupçonner que, pour ce que je veux faire, je dois créer mon propre menu de navigation principal personnalisé à l'aide de la classe Walker. Quelqu'un pourrait-il me conseiller sur la meilleure approche?

1
MJD82

Vous ne fournissez pas le paramètre correct à la fonction wp_get_nav_menu_object(). Il a besoin de l'identifiant de menu ou du slug de menu, mais vous indiquez l'emplacement du thème du menu. Évidemment, je ne peux pas vous dire quel est l'identifiant ou le slug de votre menu.

Une façon d'obtenir l'ID de menu du menu assigné à l'emplacement du thème consiste à utiliser get_nav_menu_locations():

$menu = wp_get_nav_menu_object( get_nav_menu_locations()['primary'] );
echo $menu->count;
1
cybmeta