web-dev-qa-db-fra.com

Ajouter une catégorie spécifique à un endroit spécifique au menu qui utilise wp_list_pages

J'ai un menu principal où j'affiche des pages. Toutes les pages sont associées à des sous-pages. Toutefois, dans le menu, certaines d'entre elles sont affichées par elles-mêmes sans sous-pages et certaines sont affichées avec un sous-menu sous forme de liste de toutes les sous-pages. Les pages du menu sont triées selon l'ordre de menu spécifié pour elles. (S'il vous plaît voir mon code ci-dessous).

Maintenant, j'aimerais ajouter des catégories à un endroit spécifique du menu sans savoir comment mieux le faire.

Est-il possible de le faire en utilisant wp_list_pages? Ce que j'aime dans mon code, c'est que chaque fois qu'une sous-page est ajoutée pour une page parent programmée pour afficher toutes les sous-pages, la sous-page nouvellement ajoutée apparaît automatiquement dans le menu du site. Contrairement à l'utilisation de la fonctionnalité Apparence-> Menu où un utilisateur doit ajouter une sous-page nouvellement créée au menu avant qu'elle n'apparaisse sur le site.

Je pourrais peut-être trop compliquer les choses (!) Et le seul moyen de le faire est via la fonctionnalité Apparence-> Menu. J'apprécierais vraiment toute aide et conseils!

Voici le code que j'utilise pour afficher des pages, certaines avec toutes les sous-pages et d'autres uniquement au niveau supérieur.

//main nav: use wp_list_pages to display cirtain parent pages without any and with all child pages (a tree with parent)
$parents = array(5,7,17,61,19,25);
$children = array();
foreach($parents as $parent) {
  $child_pages = get_pages( "child_of=$parent" );
  if($child_pages){
    foreach($child_pages as $child_page){
      $children[] = $child_page->ID;
    }
  }
}
//add all the pages that need to be included without children
$parents = array_merge( (array)$parents, (array)array(31,23) );
//merge $parents and $children
$menu_pages = array_merge( (array)$parents, (array)$children );
$menu_pages_str = implode(",", $menu_pages); 
?> 

<ul class="menu wrap">
  <?php wp_list_pages( "sort_column=menu_order&title_li=&include=$menu_pages_str" ); ?>
</ul>
2
dashaluna

wp_list_pages a une fonctionnalité limitée et il serait difficile d’injecter des catégories dans le mixage sans réécrire la fonction elle-même.

L'utilisation de la fonctionnalité de menu intégrée est probablement la meilleure solution car vous pouvez au moins définir des classes d'élément individuelles, ce qui vous permet de créer des en-têtes de menu pour vos catégories de niveau supérieur (les éléments d'en-tête utilisent une classe "en-tête" ou similaire).

Vous pourrez également simplement utiliser la fonction get_pages (), qui renverra un tableau des pages au lieu de simplement les imprimer sur la page. Cela vous permettra d'ajouter une logique à l'affichage des données lors d'une itération dans le tableau.

0
Dave Hunt