web-dev-qa-db-fra.com

Comment éviter le conflit de wp_nav_menu () ID?

Comment éviter les conflits d’identité si j’utilise le même menu DEUX FOIS sur une page.

PREMIER

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

SECONDE:

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

Les conflits d'identifiants ressemblent à "Duplicate ID menu-item-2456" ... Des solutions?

7
Paul

La solution n'est pas d'appeler le même 'theme_location' plus d'une fois. Emplacement du thème est destiné à représenter un emplacement explicite à l'intérieur du modèle .

Enregistrez simplement un 'theme_location' séparé pour chaque emplacement distinct du modèle pour lequel vous souhaitez afficher un menu de navigation.

Considérez vos noms 'theme_location' choisis comme étant sémantique noms, représentant l’emplacement du modèle du menu. Vous pouvez utiliser 'primary' et 'secondary', ou 'header' et 'footer', etc.:

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

...ou:

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

Ensuite, il appartient à l’utilisateur final d’affecter des menus personnalisés à chaque emplacement de thème.

2
Chip Bennett