在WordPress主題開發里,“菜單”在前端頁面中常見的調用/輸出形式可以歸納為5種,按出現頻率從高到低列給你,并給出最簡代碼片段,方便直接復制粘貼。
標準菜單位置調用(99%場景)
后臺“外觀→菜單”里把菜單A指派到菜單位置primary,模板里寫:
// header.php 或任意模板
if ( has_nav_menu( 'primary' ) ) {wp_nav_menu( ['theme_location' => 'primary', // 與 register_nav_menus() 對應'container' => 'nav','container_class'=> 'site-nav','menu_class' => 'nav-list',] );
}
這是最官方、最兼容、最SEO的方式。
直接指定某個菜單(不依賴菜單位置)
有時你想無視菜單位置,只想輸出“名叫Guest Menu”的菜單:
wp_nav_menu( ['menu' => 'Guest Menu', // 也可以用 ID 或 slug'container' => '','menu_class' => 'guest-nav',
] );
適合在登錄/未登錄時切換菜單(配合is_user_logged_in())。
用Walker輸出自定義結構(Bootstrap/Tailwind/多級)
wp_nav_menu( ['theme_location' => 'primary','walker' => new My_Walker_Nav_Menu(),
] );
Walker里可以完全控制子菜單的class/data屬性。
用wp_get_nav_menu_items()自己循環(極簡/輕量)
如果你只要一級鏈接,不想用 ul/li 的默認結構:
$items = wp_get_nav_menu_items( 'Quick Links' );
if ( $items ) {echo '<div class="quick-links">';foreach ( $items as $item ) {printf('<a href="%s" class="link">%s</a>',esc_url( $item->url ),esc_html( $item->title ));}echo '</div>';
}
適合頁腳一排純鏈接、面包屑、側邊欄快捷入口等。
用簡碼或小工具
簡碼:[menu name=”Footer Menu”]
需插件(如 Shortcode in Menus)或自己在functions.php注冊:
add_shortcode( 'menu', function ( $atts ) {$atts = shortcode_atts( [ 'name' => '' ], $atts );ob_start();wp_nav_menu( [ 'menu' => $atts['name'] ] );return ob_get_clean();
} );
小工具:
后臺“外觀→小工具”里拖一個“導航菜單”區塊到任何小工具區域(側邊欄、頁腳、全站模板部件)。
一句話總結
常規輸出 → wp_nav_menu( [‘theme_location’=>’xxx’] )
無視位置 → wp_nav_menu( [‘menu’=>’菜單名’] )
改結構 → 傳自定義 Walker
極簡循環 → wp_get_nav_menu_items() 自己 echo
非主題 → 簡碼 / 小工具
原文
http://www.dulizhan.js.cn/wordpress/7028.html