web-dev-qa-db-ja.com

スクリプトを使ってカスタムメニューにページを追加できますか?

私のテーマはカスタムメニュー割り当てを持っています...

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

...そして、私は「インストーラ」タイプのプラグインを作成しています。起動時に、このカスタムメニューにフックして、手動で作成されたかのようにそれにいくつかのページを割り当てたいと思います。

しかし、メニューAPIはかなり新しくて現在までのところ、これを行う方法の例を見つけることができませんでした。

私はここに誰かが私にそれをする方法についていくつかの方向性、例または情報を与えることができることを望みます。

前もって感謝します :-)

1
Scott B

wp_nav_menu_{$menu->slug}_itemsフックを使用して、コールバック関数を使用してリンクを追加することができます。たとえば、メニューのスラッグがheader-menuの場合は、次のようになります。

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;
}

更新

メニュー項目をデータベースに保存するために使用される関数である wp_save_nav_menu_items を呼び出す必要があると思います。

2
Bainternet