wordpress菜单仅在当前页面是给定页面的后代时显示

时间:2013-10-01 15:31:59

标签: php wordpress menu navigation

我试图开发的网站有两个根页面。 作为导航结构:

        
  • A(LEVEL 0)         
                  
    • A1(第1级)                
                        
      • A1.1(第2级)
      •                 
      • A1.2(第2级)
      •                
                  
    •             
    • A2(第1级)                
                        
      • A2.1(第2级)
      •                 
      • A2.2(第2级)
      •                
                  
    •          
        
  •     B(LEVEL 0)         
                  
    • B1(第1级)                
                        
      • B1.1(第2级)
      •                 
      • B1.2(第2级)
      •                
                  
    •             
    • B2(第1级)                
                        
      • B2.1(第2级)
      •                 
      • B2.2(第2级)
      •                
                  
    •          
          

我需要的是显示 navA如果当前页面是A 的后代,同样只有显示navB,如果当前页面是B的后代。 < / p>

我尝试在wordpress后端创建两个单独的菜单,但只有mainNav会显示。 菜单使用wp_nav_menu($ args)生成为导航,如下所示。

echo "<div class='main_menu' data-selectname='".__('Select a page','avia_framework')."'>";

                        $avia_theme_location = 'avia';
                        $avia_menu_class = $avia_theme_location . '-menu';
                        $args = array(
                            'theme_location'    => $avia_theme_location,
                            'menu_id'           => $avia_menu_class,
                            'container_class'   => $avia_menu_class,
                            'fallback_cb'       => 'avia_fallback_menu',
                            'walker'            => new avia_responsive_mega_menu()
                        );

                        **wp_nav_menu($args);**

   echo "</div>";

有没有办法从后端实现此功能?另外,有什么建议在这条路上做什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

function menu_set_parent( $sorted_menu_items, $args ) {
    $last_top = 0;
    foreach ( $sorted_menu_items as $key => $obj ) {
        // it is a top lv item?
        if ( 0 == $obj->menu_item_parent ) {
            // set the key of the parent
            $last_top = $key;
        } else {
            $sorted_menu_items[$last_top]->classes['parent'] = 'parent';
        }
    }
    return $sorted_menu_items;
}
add_filter( 'wp_nav_menu_objects', 'menu_set_parent', 10, 2 );

尝试此操作会将父类添加到父级。在functions.php

中添加此内容