Accueil » Ajouter automatiquement les pages-filles aux menus WordPress

Ajouter automatiquement les pages-filles aux menus WordPress

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;
}

Un commentaire pour « Ajouter automatiquement les pages-filles aux menus WordPress »

  1. Yann dit :

    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?

    Répondre

Laisser un commentaire pour : « Ajouter automatiquement les pages-filles aux menus WordPress »

Votre email ne sera jamais communiqué.
Les champs précédés d'un astérisque sont obligatoires.