web-dev-qa-db-fra.com

Puis-je ajouter des pages à mon menu personnalisé via un script?

Mon thème a une assignation de menu personnalisée ...

function my_register_my_menus() {
  register_nav_menus(
    array('header-menu' => __( 'Custom Header Menu' ) )
  );
}

... et je crée un plugin de type "installateur" qui, lors de l'activation, souhaite intégrer ce menu personnalisé et lui attribuer des pages comme si elles avaient été créées manuellement.

Cependant, l'API de menu est assez nouvelle et à ce jour, je n'ai pas trouvé d'exemple pour ce faire.

J'espère que quelqu'un ici pourra me donner des indications, des exemples ou des informations sur la manière de le faire.

Merci d'avance :-)

1
Scott B

Vous pouvez utiliser wp_nav_menu_{$menu->slug}_items hook et ajouter votre lien avec une fonction de rappel, par exemple si votre slug de menu est header-menu, quelque chose comme ceci:

add_filter('wp_nav_menu_header-menu_items', 'add_my_extra_links',10,2);
function add_my_extra_links($items, $args) {
  $newitems = '<li><a title="Test Link" href="http://google.com">Google</a></li>';
  $newitems .= '<li><a title="Test Link" href="http://yahoo.com">Yahoo</a></li>';
  $newitems .= '<li><a title="Test Link" href="http://bing.com">Bing</a></li>';
  $newitems .= $items;
  return $newitems;
}

Mettre à jour

Je suppose que vous auriez besoin d'appeler wp_save_nav_menu_items , fonction utilisée pour enregistrer les éléments de menu dans la base de données.

2
Bainternet