wordpress自3.0版本后增加了一个自定义导航菜单的功能,但是默认生成的菜单会被包含在<li></li>
列表标签中,对于修改主题来说甚为不便。
从wp_nav_menu()
中移除<li>
标签,网上给出的解决方案是使用strip_tags()
函数:
1 <?php
2 echo strip_tags(wp_nav_menu(
3 array('theme_location' => 'primary',
4 'container_class' => 'user_menu',
5 'echo' => false,
6 'items_wrap' => '%3$s<div class="clear"></div>')
7 ), '<a><div>');
8 ?>
Y.CHEUNG用的是官方给出的办法,用wp_get_nav_menu_items()
函数自定义菜单的输出格式,代码如下:
1 <?php
2 $menu_name = 'aboutnav';//菜单位置location,与functions.php文件中的参数一致
3 if(($locations = get_nav_menu_locations())&&isset($locations[$menu_name])){
4 $menu = wp_get_nav_menu_object($locations[$menu_name]);
5 $menu_items = wp_get_nav_menu_items($menu->term_id);
6
7 foreach ((array)$menu_items as $key => $menu_item){
8 $title = $menu_item -> title;
9 $url = $menu_item ->url;
10 $menu_list .= '<tr><td width="26" height="33"><div align="right"><img src="'.get_template_directory_uri().'/images/about_09.jpg" width="9" height="8"></div></td>
11 <td width="203"> <a href="'.$url.'" class="black14b">'.$title.'</a></td></tr>';//自定义菜单每条项目item输出的格式
12 }
13 }else{
14 $menu_list = '<tr><td width="26" height="33"><div align="right"><img src="'.get_template_directory_uri().'/images/about_09.jpg" width="9" height="8"></div></td>
15 <td width="203">Menu "' . $menu_name . '" not defined.</td></tr>';
16 }
17 echo $menu_list;
18 ?>
以上代码皆按需放置在template.php
中相应导航菜单需要输出的位置。