Wordpress中修改自定义导航菜单标签输出格式

Posted by Y Cheung on Thu, Nov 13, 2014

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">&nbsp;<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中相应导航菜单需要输出的位置。