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

wordpress自3.0版本后增加了一个自定义导航菜单的功能,但是默认生成的菜单会被包含在<li></li>列表标签中,对于修改主题来说甚为不便。

wp_nav_menu()中移除<li>标签,网上给出的解决方案是使用strip_tags()函数:

<?php
echo strip_tags(wp_nav_menu(
        array('theme_location' => 'primary',
            'container_class' => 'user_menu',
            'echo' => false,
            'items_wrap' => '%3$s<div class="clear"></div>')
), '<a><div>');
?>

Y.CHEUNG用的是官方给出的办法,用wp_get_nav_menu_items()函数自定义菜单的输出格式,代码如下:

 <?php 
    $menu_name = 'aboutnav';//菜单位置location,与functions.php文件中的参数一致
            if(($locations = get_nav_menu_locations())&&isset($locations[$menu_name])){
                $menu = wp_get_nav_menu_object($locations[$menu_name]);
                $menu_items = wp_get_nav_menu_items($menu->term_id);

                foreach ((array)$menu_items as $key => $menu_item){
                    $title = $menu_item -> title;
                    $url = $menu_item ->url;
                    $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>
            <td width="203">&nbsp;<a href="'.$url.'" class="black14b">'.$title.'</a></td></tr>';//自定义菜单每条项目item输出的格式
                }
            }else{
                $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>
            <td width="203">Menu "' . $menu_name . '" not defined.</td></tr>';
            }
            echo $menu_list;
            ?>

以上代码皆按需放置在template.php中相应导航菜单需要输出的位置。