Dynamisches Menü

Falls Du mal auf die anderen Seiten meiner Webpräsenz geschaut hast, wird Dir aufgefallen sein, dass sich das zweite Menü dynamisch daran anpasst, welche Seite gerade gewählt wurde. Ist vielleicht bei meiner kleinen Seite und der übersichtlichen Menüstruktur überflüssig, aber ich mag sowas. Und wenn ich mal die Muße habe oder ein passendes Template finde, dann werde ich auch noch deutlicher machen, dass sich das zweite Menü abhängig vom gerade besuchten Bereich ändert.

Als kleine Gedankenstütze poste ich hier den Code, den ich dafür benutzt habe. Es kam nämlich vor kurzem ein Update meines eingesetzten Templates und alle zusätzlichen Einträge in der functions.php waren dahin.

#######################
# Dynamic second menu #
#######################

function nr_2010_wp_nav_menu_args($args = '')
{
if ( is_page() && $args['theme_location']=='sub') //custom menus only on sites
{
global $post;
$menu_name = get_post_meta($post->ID, 'menu_name', true);
if( !empty($menu_name) && is_nav_menu($menu_name) )
{
$args['menu'] = $menu_name;
}
}
return $args;
}
add_filter( 'wp_nav_menu_args', 'nr_2010_wp_nav_menu_args' );

Für die eigene Seite muss vor allem die „theme_location“ in der if-Abfrage angepasst werden. Bei mir heißt das zweite Menü „sub“, aber das kann bei Deiner Seite ja ganz anders sein. Dazu muss bei den einzelnen Seiten ein benutzerdefiniertes Feld namens „menu_name“ eingetragen werden, dem der Name des selbst erstellten Menüs enthält. Also z.B. „menu_name“ bei Name und „homemenu“ bei Wert.

Vielen Dank an Niklas, der das Ganze bei bueltge.de vorgestellt hat.

Und nun werde ich nicht wieder eine Suchmaschine bemühen müssen, um den Code wiederzufinden. Und den Namen des zweiten Menüs muss ich auch nicht wieder umständlich aus dem Template-Code heraussuchen.