WordPress如何在主导航下拉菜单后添加<span>

WordPress how to add <span> after main navigation dropdown

我想在具有特定 class.

的主导航 li 元素中添加一个空的 '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>

我有一个代码可以在每次导航后添加 span link:

add_filter('nav_menu_item_args', function ($args, $item, $depth) {
if ( $args -> theme_location == 'primary') {
    $args -> link_after  = '<span></span>';
}
    return $args;
}, 10, 3);

如何实现只在 'li' 元素中添加 'span',而 'has-children' class?感谢您的帮助!

您可以使用 nav_menu_link_attributes 过滤器挂钩来访问导航属性。

From Documentation
nav_menu_link_attributes

  • 'after'
    (string) Text after the link markup.
  • 'link_after'
    (string) Text after the link text.

因此您可以通过多种方式进行设置,例如您可以这样做:

add_filter('nav_menu_link_attributes', 'your_theme_custom_html_element', 10, 3);

function your_theme_custom_html_element($atts, $item, $args)
{

  if ($args->theme_location == 'primary' && (strpos($atts['class'], 'has-childern') !== false)) {

    $args->after  = '<span></span>';

  }

  return $atts;
}

刚刚在我自己的网站上测试过,它运行得很好!