Est-il possible de définir l'option suivante à partir d'un plugin WordPress, si vous connaissez le nom du menu que vous souhaitez définir:
Mon développeur dit que ce n'est pas possible, mais je suis sûr que l'un de vous, les gourous, sait comment s'y prendre;)
Vous pouvez utiliser le filtre wp_nav_menu_args
( Référence Codex ) pour définir un emplacement de thème afin d’utiliser un menu spécifique.
Exemple:
function test_wp_nav_menu_args( $args = '' ) {
// only set menu for the primary navigation menu.
if ( $args['theme_location'] != 'primary' ) {
return $args;
}
// change {main-menu} to be the slug of the menu you want to set.
$args['menu'] = 'main-menu';
return $args;
}
add_filter( 'wp_nav_menu_args', 'test_wp_nav_menu_args' );
Vous pouvez utiliser get_theme_mod
et set_theme_mod
pour enregistrer les emplacements du menu de navigation.
Obtenir des emplacements:
$locations = get_theme_mod( 'nav_menu_locations' );
var_dump( $locations );
impressions:
Array
(
[primary] => 0
[secondary] => 0
)
Obtenir les menus de navigation existants:
$nav_menus = get_terms( 'nav_menu', array( 'hide_empty' => true ) );
var_dump( $nav_menus );
impressions:
Array
(
[0] => stdClass Object
(
[term_id] => 2
[name] => Main
[slug] => main
[term_group] => 0
[term_taxonomy_id] => 2
[taxonomy] => nav_menu
[description] =>
[parent] => 0
[count] => 3
)
}
Définir l'emplacement:
$nav_menu_id = $nav_menus[0]->term_id;
$location = 'primary';
$locations[ $location ] = $nav_menu_id;
set_theme_mod( 'nav_menu_locations', $locations );