可以通过覆盖Walker_Nav_menu来使用PHP更改wordpress定制的walker类的第一个(根)ul标签吗()

大家好, 我通常使用Wordpress Framework创建一个扩展Walker_Nav_menu的自定义walker, 以制作自定义wordpress菜单。我确实在functions.php中注册了Menu位置, 我确实连接了菜单并创建了一个custom_nav_walker, 并且可以正常工作。但是我不能使用Navwalker php类将main ul根标记更改为一些内联代码, 而不使用javascript。
因此, 导航菜单html就是这样。

< ul id="Root-tag-That-I-want-to-modify" class="vertical medium-horizontal menu dropdown" < !--I WANT TO ECHO CODE HERE USING PHP --> > < li id="menu-item-146" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-home active menu-item-146"> < a href="http://Thelink"> Item< /a> < /li> < li id="menu-item-147" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-ancestor current-menu-parent current_page_parent current_page_ancestor menu-item-has-children active has-dropdown menu-item-147"> < a href="http://ThesecondLink"> submeu< /a> < ul class="0 menu submenu is-dropdown-submenu first-sub vertical"data-submenu="" role="menu"> < li id="menu-item-153" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-home active menu-item-153"> < a href="http://anotherlink"> submeu item< /a> < /li> < /ul> < /li> < /ul>

我试图覆盖Walker类内部的start_lvl函数:
function start_lvl( & $output, $depth = 0, $args = array() ) { $indent = str_repeat( "\t", $depth ); $first = ($depth === 0) ? 'first-sub' : ''; $output .= "\n$indent< ul class=\"$depth menu submenu is-dropdown-submenu $first vertical\"data-submenu=\"\" role=\"menu\"> \n"; }

在ul标签内打印$ depth之后, 我发现此start_lvl没有处理此第一个UL
在此类中我可以在哪里覆盖主要的UL标签, 我检查了wordpress调用wp_nav_menu数组, 也许错过了一些东西?我对不使用Javascript的PHP感兴趣。
#1【可以通过覆盖Walker_Nav_menu来使用PHP更改wordpress定制的walker类的第一个(根)ul标签吗()】我发现的一种解决方案是在实例化walker类时更改’ menu_class’ 参数, 通常你具有:
wp_nav_menu( array( 'menu_class'=> 'vertical medium-horizontal menu dropdown', 'items_wrap'=> '< ul id="%1$s" class="%2$s"> %3$s< /ul> ', 'depth'=> 0, 'walker'=> new Custom_Walker_Class()));

为了包括一些额外的行代码示例(data-sensitive-menu =” accordion medium-dropdown” role =” menubar’ ), 我将其更改为:
wp_nav_menu( array( 'menu_class'=> 'vertical medium-horizontal menu dropdown" data-responsive-menu="accordion medium-dropdown" role="menubar', 'items_wrap'=> '< ul id="%1$s" class="%2$s"> %3$s< /ul> ', 'depth'=> 0, 'walker'=> new Custom_Walker_Class()));

基本上, 它会在此参数字符串中运送所有ul标签内联代码。由于它获取字符串(应该只是ul标记类), 并将其包装在引号中, 以将其打印为HTML中nav元素的包装。
好的, 到目前为止, 这个想法很好, 但是我无法避免使用引号, 因此我以如下的源代码结尾:
class =” 垂直中水平菜单下拉菜单” ;数据响应菜单=” ” ;手风琴中下拉菜单” role =” 菜单栏” ;
我所做的纠正操作是:
我将wp_nav_menu结果存储到一些变量中
我将该变量编码为字符串(“ 将变为” )
我解码并打印了结果HTML
$db = esc_attr('" '); $inlinecode= esc_attr('vertical medium-horizontal menu dropdown' . $db . ' data-responsive-menu=' . $db . ' accordion medium-dropdown' . $db . ' role=' . $db . ' menubar' . $db . '); $mainmenu = wp_nav_menu( array('menu_class'=> $inlinecode, 'echo'=> false, 'items_wrap'=> '< ul id="%1$s" class="%2$s"> %3$s< /ul> ', 'depth'=> 0, 'walker'=> new Walker_Primary() )); $men_encoded = esc_attr($mainmenu); echo html_entity_decode($men_encoded);

    推荐阅读