可以通过覆盖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);
推荐阅读
- 更改Hestia上的节顺序
- 无法在”自定义”菜单中为站点标识logo选择图像
- 无法在WordPress中添加自定义页面
- 无法在WordPress编辑器中保存已编辑的主题PHP页面(管理面板)
- 我可以允许作者将自己的头像更改为自定义图片吗()
- Astra入门网站导入未通过,它弹出”未找到”,并永远保持导入网站继续进行
- 在WordPress中调用动态数据
- 在我自己的wordpress主题中添加the_post_thumbnail作为CSS背景
- IOS技术分享| 在iOS WebRTC 中添加美颜滤镜