Wordpress 添加<;span>;主导航后下拉开关

Wordpress 添加<;span>;主导航后下拉开关,wordpress,filter,navigation,nav,wp-nav-walker,Wordpress,Filter,Navigation,Nav,Wp Nav Walker,我喜欢在主导航元素中添加一个空的“span”,它有一个特定的类。以下是所需的外观: <ul> <li class="menu-item"><a href="#" class="nav-link"></a></li> <li class="menu-item"><a href="#" class="nav-lin

我喜欢在主导航元素中添加一个空的“span”,它有一个特定的类。以下是所需的外观:

<ul>
<li class="menu-item"><a href="#" class="nav-link"></a></li>
<li class="menu-item"><a href="#" class="nav-link"></a></li>
<li class="menu-item has-childern"><a href="#" class="nav-link"></a><span></span></li>
</ul>
我有一个代码,在每个导航链接后添加跨度:

add_filter('nav_menu_item_args', function ($args, $item, $depth) {
if ( $args -> theme_location == 'primary') {
    $args -> link_after  = '<span></span>';
}
    return $args;
}, 10, 3);
add_filter('nav_menu_item_args',函数($args,$item,$depth){
如果($args->theme\u location=='primary'){
$args->link_after='';
}
返回$args;
}, 10, 3);

如何实现仅在包含“has children”类的“li”元素中添加“span”?谢谢你的帮助

您可以使用
nav\u菜单\u链接\u属性
filter钩子访问nav属性

来自文档

  • “之后”
    链接标记后的(字符串)文本
  • “链接在”
    链接文本后的(字符串)文本
因此,您可以通过多种方式进行设置,例如,您可以执行以下操作:

add_filter('nav_menu_link_attributes'、'your_theme_custom_html_element',10,3);
函数您的主题自定义html元素($atts、$item、$args)
{
if($args->theme_location=='primary'和&($atts['class','has childern')!==false)){
$args->after='';
}
返回$atts;
}

刚刚在我自己的网站上测试过,效果很好

谢谢你的回答,鲁维!您的代码几乎可以按照我的需要工作:我的问题是,它将跨度添加到包含该特定类的导航项之后的所有导航项。检查:-只有下拉菜单有“下拉切换”类,但是跨距也出现在其他菜单上。我不明白为什么会发生这种情况,因为你的代码对我来说很好。好吧,我的代码将
添加到任何有一个名为“has children”的类的地方。我没有更改你的代码,它看起来很好,但对我来说,它将跨度添加到没有“has children”类的菜单项中。我在想它是怎么发生的。是的,我知道有时候会发生。正如我所说,我在我自己的网站上模拟了您在问题中提供的相同的
html
标记,它完全符合您的需要。因此,为了进一步调试和定制它,我需要查看您确切的
html
标记。如果您愿意,您可以向我提供您的
html
matkup的屏幕截图和/或编辑您的问题以包含主
html
。我在这里找到了答案:-感谢您的努力!好的,感谢您为我提供
反馈
,以及
共享
解决方案。