問題描述

如果我在一個頁面上使用相同的菜單 TWICE,我如何避免 ID 衝突。

第一

wp_nav_menu( array( 'sort_column' => 'menu_order', 
'theme_location'=>'menu', 'menu_class'=>'menu', 'menu_id'=>'menu' ) );

第二:

wp_nav_menu( array( 'sort_column' => 'menu_order', 
'theme_location'=>'menu', 'menu_class'=>'menu2', 'menu_id'=>'menu2' ) );

ID 衝突就像 「重複的 ID menu-item-2456」… 任何解決方案?

最佳解決方案

解決方案不是多次調用相同的'theme_location'。主題位置旨在表示模板中的顯式位置。

只需在模板中為要顯示導航菜單的每個單獨位置註冊一個單獨的'theme_location'

考慮您選擇的'theme_location'名稱是語義名稱,表示菜單的模板位置。您可以使用'primary''secondary',或'header''footer'等。

<?php
function wpse55380_setup_theme() {

    // Register nav menu locations
    register_nav_menus( array(
        'header' => 'Header Menu',
        'footer' => 'Footer Menu'
    ) );
}
add_action( 'after_setup_theme', 'wpse55380_setup_theme' ); 

… 要麼:

<?php
function wpse55380_setup_theme() {

    // Register nav menu locations
    register_nav_menus( array(
        'primary'   => 'Primary Header Menu',
        'secondary' => 'Secondary Header Menu'
    ) );
}
add_action( 'after_setup_theme', 'wpse55380_setup_theme' ); 

然後,最終用户可以為每個主題位置分配自定義菜單。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。