2012-09-11 18 views
7

は私が手動でより多くの項目を追加することができますどのようにナビゲーションメニュー ワードプレス。 wp_nav_menuに手動でメニュー項目を追加する私のテーマで

function ct_nav() { 
    <nav> 
    <?php wp_nav_menu(array('container_id' => 'nav', 'theme_location' => 'primary')); ?> 
    </nav> 
} 

する機能はありますか?この機能だけを使用してください。

+0

関数呼び出し後に自分でマークアップを追加するのはなぜですか? –

+0

ええ、私はあなたが何を意味するか分からない、上記のマークアップ内に手動でアイテムを追加することができますか?何を正確に追加しようとしていますか? – csilk

答えて

2

ただ、誰かがこれを必要とする場合のために:

メニュー項目は、フィルタを適用することにより、手動で追加することができます。

  • wp_nav_menu_items - すべてのメニュー
  • wp_nav_menu_{$menu->slug}_itemsのために - メニューの特定のスラグと

また、items_wrapを変更すると、たとえば<ul>を削除して明示的にテーマ - この方法であなた自身のアイテムを追加することができます。

+0

これには、メニューがmenu_locationに既に割り当てられている必要があります。メニューが割り当てられていない状態でこれを行う方法はありますか(外観>メニュー)。これは私がやっているマルチサイト作業に役立ちます。 – raison

17

ここはitems_wrapを変更した例です。

wp_nav_menu(array('items_wrap' => '<ul id="%1$s" class="%2$s"><li><a href="http://www.google.com">go to google</a></li>%3$s</ul>')); 

ちょうどデフォルト値をとり、hrefを追加しました。

7
function add_last_nav_item($items) { 
    return $items .= '<li><a href="#myModal" role="button" data-toggle="modal">Contact</a></li>'; 
} 
add_filter('wp_nav_menu_items','add_last_nav_item'); 
+0

これは間違いなく最適なソリューションです。 –

+0

ありがとう@JasonGlisson –

1

上記の回答はどれも私にとっては効果がありませんでした。これは私が使用した回避策のjqueryタイプです。メニューの最後に画像を追加する必要がありました。

通常通りwp_nav_menu()を使用してください。menu_classにクラスを指定するか、IDを指定してください。

$items = array(
    'theme_location' => 'header-menu', 
    'menu'   => '', 
    'container'  => 'div', 
    'container_class' => 'menu-{menu slug}-container', 
    'container_id' => '', 
    'menu_class'  => 'menuContainer', /* important, since we're targetting it with jquery*/ 
    'menu_id'   => '', 
    'echo'   => true, 
    'fallback_cb'  => 'wp_page_menu', 
    'before'   => '', 
    'after'   => '', 
    'link_before'  => '', 
    'link_after'  => '', 
    'depth'   => 0, 
    'walker'   => '' 
); 
wp_nav_menu($items); 

$(document).ready(function() { 
      $(".menuContainer ul").append("<li><img src='<?php echo get_template_directory_uri(); ?>/img/menuImage.png'></li>"); 
     });