Manipulating menu HTML

时间:2012-01-15 作者:Jason Swett

我的网站的菜单使用“外观>>菜单”下的内置菜单。我想做一个非常简单的更改:我想把菜单中的每一个二级ul都包装在一个DIV中。

最简单的方法是什么?

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

使用custom walker. 扩展功能start_lvl()end_lvl():

class WPSE39005_Div_Walker extends Walker_Nav_Menu
{
    /**
     * @see Walker::start_lvl()
     *
     * @param string $output Passed by reference. Used to append additional content.
     * @return void
     */
    public function start_lvl( &$output, $depth )
    {
        $output .= \'<div><ul class="sub-menu">\';
    }

    /**
     * @see Walker::end_lvl()
     *
     * @param string $output Passed by reference. Used to append additional content.
     * @return void
     */
    public function end_lvl( &$output, $depth )
    {
        $output .= \'</ul></div>\';
    }
}
在你的主题中这样称呼它:

<?php
// If there is no menu assigned we show nothing.
has_nav_menu( \'top-menu\' )
// Path to the file with the walker relative to theme’s root.
and locate_template( \'php/class.WPSE39005_Div_Walker.php\', TRUE, TRUE )
and wp_nav_menu(
    array (
    \'menu\'       => \'top-menu\'
,   \'walker\'     => new WPSE39005_Div_Walker
    )
);
?>

结束

相关推荐

Menu API not switching menus?

我正在使用菜单API,我想切换到其他菜单,但出于某种原因,它保留了第一个菜单这是我的密码在函数中。php add_action( \'init\', \'register_my_menus\',10 ); function register_my_menus() { register_nav_menu(\'main-navigation\', \'Main Navigation\'); } 下面是我的主题文件(header.ph