大家好, 我通常使用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类时更改’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);
评论前必须登录!
注册