Zeigen Sie den Menünamen mit wp_nav_menu an

17

Ich habe ein benutzerdefiniertes Menü, das ich mit wp_nav_menu aufrufen kann. Gibt es eine Möglichkeit, den Menünamen in einem h3-Tag vor dem Menü anzuzeigen?

Ex.

<h3>My Menu Name</h3>
<nav>
<ul>
<li>Menu Item 1</li>
<li>Menu Item 2</li>
</ul>
</nav>
csi
quelle

Antworten:

15

Wenn Sie den Slug des Menüs kennen, sind die Dinge einfacher, andernfalls können Sie diese Funktion verwenden, um das Menü an einem bestimmten Ort abzurufen.

<?php
function wpse45700_get_menu_by_location( $location ) {
    if( empty($location) ) return false;

    $locations = get_nav_menu_locations();
    if( ! isset( $locations[$location] ) ) return false;

    $menu_obj = get_term( $locations[$location], 'nav_menu' );

    return $menu_obj;
}
?>

Dann

//if you after the menu the menu with a specific ID / Slug
//$menu_obj =wp_get_nav_menu_object($id_slug_or_name); 

//if you after the menu at a specific location
$menu_obj = wpse45700_get_menu_by_location($location); 

echo "<h3>".esc_html($menu_obj->name)."</h3>";
//Display menu here

Anstatt den HTML-Code zu wiederholen, können Sie ihn auch als Teil des Arguments für das Attribut items in übergeben wp_nav_menu.

So zeigen Sie beispielsweise das Menü an der Position "primär" an:

$location = 'primary';
$menu_obj = wpse45700_get_menu_by_location($location ); 
wp_nav_menu( array('theme_location' => $location, 'items_wrap'=> '<h3>'.esc_html($menu_obj->name).'</h3><ul id=\"%1$s\" class=\"%2$s\">%3$s</ul>') ); 
Stephen Harris
quelle
1
Stephen, danke für die tolle Antwort. Tut mir leid, dass Sie ein Noob sind, aber könnten Sie Code für die Übergabe des HTML-Codes als Argument angeben? Das würde alles lösen. Vielen Dank!
CSI
Siehe aktualisierte Antwort: D
Stephen Harris
4

Ersetzen Sie die ID 4 unten durch die ID Ihres Menüs. Wenn Sie die ID nicht kennen, rufen Sie die Menüseite des Administrators auf. Klicken Sie mit der rechten Maustaste auf die Registerkarte des Menüs, für das Sie den Titel ausgeben möchten.

<?
$_menu_object = wp_get_nav_menu_object( 4 );
$nav_menu_selected_title = $_menu_object->name;
echo $nav_menu_selected_title;
?>
tbradley22
quelle
2

Stephens Antwort ist gut. aber ich sage es noch einen schritt weiter:

<?php 
$location = 'footer_navigation3';
if (has_nav_menu($location)) :
    $menu_obj = get_menu_by_location($location); 
    wp_nav_menu( array( 
        'theme_location'  => $location,
        'items_wrap'=> '<strong>'.esc_html($menu_obj->name).'</strong><ul id="%1$s" class="%2$s">%3$s</ul>'
    )); 
endif;
?>

vorausgesetzt, Sie haben einen Themenstandort mit dem Namen "footer_navigation3" registriert und diesem ein wp-Menü zugewiesen. Platzieren Sie diesen Code nun an der Stelle, an der Sie Ihr Menü anzeigen möchten.

nicmare
quelle