Skip to content
This repository has been archived by the owner. It is now read-only.

Commit

Permalink
Nav fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
jmr06005 committed Aug 4, 2015
1 parent 278a326 commit 8594263
Show file tree
Hide file tree
Showing 4 changed files with 507 additions and 607 deletions.
64 changes: 0 additions & 64 deletions inc/nav-drop-multi-walker.php
Original file line number Diff line number Diff line change
Expand Up @@ -167,68 +167,4 @@ function display_element ($element, &$children_elements, $max_depth, $depth = 0,
}
}
}
// add hook
add_filter( 'wp_nav_menu_objects', 'my_drop_multi_nav_menu_objects_sub_menu', 10, 2 );

// filter_hook function to react on sub_menu flag
function my_drop_multi_nav_menu_objects_sub_menu( $sorted_menu_items, $args ) {
if ( isset( $args->sub_menu ) ) {


$root_id = 0;
$root_level = 0;
$parent_id = 0;
$second_level_parent = 0;
$newmenu = array();
$level = 0;
$stack = array('0');
foreach($sorted_menu_items as $key => $menu_item) {
while(in_array($menu_item->menu_item_parent, $stack) && $menu_item->menu_item_parent != array_pop($stack)) {
$level--;
}
$level++;
$stack[] = $menu_item->menu_item_parent;
$stack[] = $menu_item->ID;
$sorted_menu_items[$key]->level = $level;
if(!isset($newmenu[$level])){
$newmenu[$level] = array();
}
$newmenu[$level][$menu_item->ID] = $menu_item->menu_item_parent;

if ( $menu_item->current ) {
// set the root id based on whether the current menu item has a parent or not
$root_id = $menu_item->ID;
$root_level = $level;
$parent_id = $menu_item->menu_item_parent;
}
}
if($root_level == 2){
$second_level_parent = $root_id;
}
elseif($root_level == 3){
$second_level_parent = $parent_id;
}
elseif($root_level == 4){
$second_level_parent = $newmenu[3][$parent_id];
}
else return array();
if( isset($newmenu[3]) && is_array($newmenu[3]) ){
foreach($newmenu[3] as $id=>$menu_item){
if($menu_item != $second_level_parent) unset($newmenu[3][$id]);
}
}
if( isset($newmenu[4]) && is_array($newmenu[4]) ){
foreach($newmenu[4] as $id=>$menu_item){
if(!isset($newmenu[3][$menu_item])) unset($newmenu[4][$id]);
}
}
foreach($sorted_menu_items as $key => $menu_item) {
if(!isset($newmenu[3][$menu_item->ID]) && !isset($newmenu[4][$menu_item->ID])) unset($sorted_menu_items[$key]);
}
return $sorted_menu_items;
} else {
return $sorted_menu_items;
}
}

?>
Loading

0 comments on commit 8594263

Please sign in to comment.