如何避免wp_NAV_MENU()ID冲突?

时间:2012-06-15 作者:Paul

如果我在一个页面上使用同一菜单两次,如何避免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菜单项-2456”。。。有什么解决方案吗?

1 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

解决方法是不调用相同的\'theme_location\' 不止一次。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\' ); 
那么,这取决于end user 为每个主题位置指定自定义菜单。

结束