Tampilkan Nama Menu menggunakan wp_nav_menu

17

Saya memiliki menu khusus yang bisa saya panggil menggunakan wp_nav_menu. Apakah ada cara agar nama menu ditampilkan di dalam tag h3 sebelum menu?

Ex.

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

Jawaban:

15

Jika Anda mengetahui siput menu, maka segalanya lebih mudah, jika tidak, Anda dapat menggunakan fungsi ini untuk mendapatkan menu di lokasi yang ditentukan.

<?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;
}
?>

Kemudian

//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

Atau, daripada menggemakan html, Anda bisa meneruskannya sebagai bagian dari argumen untuk atribut item dalam wp_nav_menu.

Misalnya, untuk menampilkan menu di lokasi 'primer':

$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
sumber
1
Stephen, terima kasih atas tanggapannya. Maaf menjadi noob tetapi bisakah Anda memberikan kode untuk melewatkan html sebagai argumen. Itu akan menyelesaikan segalanya. Terima kasih!
csi
Lihat jawaban yang diperbarui: D
Stephen Harris
4

ganti id 4 di bawah ini dengan id menu Anda. jika Anda tidak tahu id masuk ke halaman menu admin, klik kanan pada tab menu yang Anda ingin gema judul, periksa elemen dan id akan terdaftar sebagai menu = ID dalam tautan.

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

Jawaban stephen baik. tapi saya selangkah lebih maju:

<?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;
?>

dengan asumsi Anda telah mendaftarkan lokasi tema yang disebut "footer_navigation3" dan menetapkan menu wp untuk itu. sekarang tempatkan kode ini di mana pun Anda ingin menampilkan menu Anda.

mimpi buruk
sumber