Wie würde ich mit wp_nav_menu einen Titel vor der ul hinzufügen?

Lesezeit: 3 Minuten

Ich muss meinem Menü einen Titel hinzufügen, der von wp_nav_menu erstellt wird … etwa so:

<div class="container">
  <div class="title">My Menu Title</div>
  <ul class="menu">
    <li class="item"><a href="#">Item 1</a></li>
    <li class="item"><a href="#">Item 2</a></li>
    <li class="item"><a href="#">Item 3</a></li>
  </ul>
</div>

Ich finde es seltsam, dass dies nicht standardmäßig enthalten ist :s

Benutzer-Avatar
Anonym

Das sollte für Sie funktionieren!

wp_nav_menu(
  array(
    'items_wrap' => '<div class="title">Your menu title</div><ul class="%2$s">%3$s</ul>'
  )
);

Dies scheint eine leicht kaputte Option zu sein, ich habe die Anleitung im WordPress-Codex und eine verlinkte empfohlene Anleitung befolgt, und jedes Mal, wenn items_wrap überhaupt nichts getan hat, war mein ursprünglicher Menücode

<?php wp_nav_menu( array( 'theme_location' => 'primary','items_wrap' => '<ul id="%1$s" class="sf-menu %2$s">%3$s</ul>' ) ); ?>

Was nicht funktionierte und nach langem Haarziehen wechselte ich zu diesem

<?php wp_nav_menu( array( 'items_wrap' => '<ul class="sf-menu %2$s">%3$s</ul>' ) ); ?>

Beide sind im Grunde identisch, also geben Sie nicht auf, wenn es beim ersten Mal nicht funktioniert, ziehen Sie sich zurück und versuchen Sie es weiter!

Benutzer-Avatar
tolginho

Normalerweise gibt es eine Möglichkeit, dies zu tun, ohne den Kern zu bearbeiten. Ich habe die Funktionscodes wp_nav_menu() kopiert und leicht modifiziert, um dies zu tun.

  // set menu arguments
  $args = array('theme_location' => 'primary_navigation');

  // if menu parameter set directly get menu object directly
  if (isset($args['menu']))
    $menu = wp_get_nav_menu_object( $args['menu'] );
  // otherwise get it from theme location
  elseif ( !isset($menu) && $args['theme_location'] && ( $locations = get_nav_menu_locations() ) && isset( $locations[ $args['theme_location'] ] ) )
    $menu = wp_get_nav_menu_object( $locations[ $args['theme_location'] ] );

  // if menu name exists, pass it into items_wrap
  if (isset($menu) && isset($menu->name))
    $args['items_wrap'] = '<h6>'. $menu->name .'</h6><ul class="%2$s">%3$s</ul>';
    wp_nav_menu($args);

Entsprechend WordPress-Codexsollten Sie niemals den WordPress-Core hacken, denn:

Kern nicht hacken

Sie können die WordPress-Funktion verwenden wp_get_nav_menu_name um den Menütitel basierend auf der Themenposition an der gewünschten Stelle anzuzeigen.

Für das Hauptmenü können Sie beispielsweise Folgendes verwenden:

<h3><?php echo wp_get_nav_menu_name( 'primary' ); ?></h3>

<?php wp_nav_menu([
    'theme_location'  => 'primary',
    // ...
]); ?>

Hackfunktion wp_nav_menu() in /wp-includes/nav-menu-template.php nach Zeile 270 hinzufügen

$nav_menu = $items="";

diese Linie:

$nav_menu .='<h3>'.$menu->name.'</h3>';

1354160cookie-checkWie würde ich mit wp_nav_menu einen Titel vor der ul hinzufügen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy