问题描述

如果我在一个页面上使用相同的菜单 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。