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