Voici un bout de code qui me sert de temps en temps. Il s’agit de modifier dynamiquement un menu WordPress pour y ajouter automatiquement les pages-filles.

Vous m’excuserez de ne pas détailler le fonctionnement du code mais il faut que je retourne à mon Notepad++. Je prends juste 5 minutes pour le poster ici : ça m’évitera, à l’avenir, de chercher partout sur quel site j’ai bien pu faire ça… Et je suis sûr qu’il pourra vous être utile un de ces jours !

Sur ce, bon week-end et profitez bien du soleil !

add_filter('wp_get_nav_menu_items','nav_items',10,3);
function nav_items($items,$menu,$args){
	if(!is_admin()){
		if($menu->name == 'header'){ //nom du menu que l'on souhaite modifier dynamiquement
			$newItems = array();
			$menuOrder = 1;
			foreach($items as $item){
				$item->menu_order = $menuOrder;
				$newItems[] = $item;
				if($item->object == 'page'){
					$page_id = $item->object_id;
					$pages = get_pages(array(
						'child_of'=>$page_id,
						'sort_column'=>'menu_order'
					));
					if(count($pages)>0){
						foreach($pages as $page){
							$page->title = $page->post_title;
							$page->url = get_permalink($page->ID);
							$page->menu_item_parent = $item->ID;
							$page->db_id = $page->ID;
							$page->object ='page';
							$page->object_id =$page->ID;
							$page->type ='post_type';
							$page->post_type ='nav_menu_item';
							$menuOrder++;
							$page->menu_order = $menuOrder;
							$newItems[] = $page;						
						}
					}
				}
				$menuOrder++;
			}
			$items = $newItems;		
		}
	}
	return $items;
}

Cet article a 1 commentaire

  1. Bonjour,

    J’ai tester cette fonction qui « fonctionne » mais elle ne permet pas de garder la structure des pages si il y a plusieurs descendances.

    Si la structure est :

    Page 1
    -Sous page 1
    -Sous page 2
    Page 2

    Cela fonctionne, mais si on cherche à ajouter automatique les pages filles des sous pages, cela ne garde pas le système de décalage. Toutes les pages sont affichés les unes en dessous des autres.

    Il y a t-il une solution pour que cette fonction marche sur les pages filles des sous pages?

Laisser un commentaire

Fermer le menu
nec mattis Donec ut Praesent ipsum amet, leo. et, Praesent ipsum sem,