2012-09-11 77 views
7

在我的主题还有用于导航菜单Wordpress。手动添加菜单项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>"); 
     }); 
相关问题