web-dev-qa-db-fra.com

Comment assigner un WP 3.0 menu de navigation personnalisé à l'emplacement du menu de navigation d'un thème via un script?

J'utilise ce script dans un plugin pour créer un nouveau menu personnalisé à la volée et lui assigner une page ...

$menu_id = wp_create_nav_menu( 'header-menu' );
$menu = array( 'menu-item-type' => 'custom', 'menu-item-url' => get_home_url('/'),'menu-item-title' => 'Home', 'menu-item-status' => 'publish' );
wp_update_nav_menu_item( $menu_id, 0, $menu );

Et cela fonctionne très bien. Cependant, je ne sais pas trop comment relier ce menu à l'un des "emplacements de menu" de mon thème. Depuis que j'enregistre un emplacement de navigation appelé "header-menu" dans le functions.php de mon thème, j'ai pensé que le code ci-dessus, appelé wp_create_nav_menu ('header-menu') accrocherait mon menu personnalisé à l'emplacement défini dans mon thème "header-menu", mais ce n'est pas le cas.

Par exemple, mon thème enregistre deux emplacements de menu ...

register_nav_menus(
  array('header-menu' => __( 'My Header Menu' ), 
 'footer-menu' => __( 'Footer Menu' ))
);

Comment puis-je relier le "menu d'en-tête" que j'ai créé avec wp_create_nav_menu ("Menu d'en-tête") à l'emplacement "Mon menu d'en-tête" que j'ai enregistré dans mon thème? Je suis sûr que la réponse se trouve quelque part dans nav-menu.php, mais je ne la trouve pas.

c'est-à-dire que je peux le faire manuellement à partir du gestionnaire "Apparence> Menus" de WordPress et sous "Emplacements des thèmes> Menu de navigation principal", je sélectionne "Menu en-tête" et cliquez sur "Enregistrer". J'essaie de faire cela dans le script.

2
Scott B

Si vous avez déjà trouvé une réponse qui vous convient, je vous encourage à la poster ici pour que les autres le voient. Sinon, j'utiliserais un filtre personnalisé ou une action.

Lorsque le menu est affiché dans le thème, utilisez apply_filters ou do_action pour déclencher le remplacement souhaité, puis dans votre plug-in, connectez-le à cette action/ce filtre pour générer le remplacement. Il s'agit d'une manière plus non destructive d'accomplir la même tâche, car vous n'écrasez pas alors une association de menus.

1
Matthew Boynes