1

我喜欢在li具有特定类的主导航元素中添加一个空的“跨度”。

这是所需的外观:

<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);

如何实现仅在具有“has-children”类的“li”元素中添加“span”?感谢您的帮助!

4

1 回答 1

1

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

来自文档
nav_menu_link_attributes

  • 'after'
    (string) 链接标记后的文本。
  • 'link_after'
    (string) 链接文本之后的文本。

因此,您可以通过多种方式进行设置,例如,您可以执行以下操作:

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;
}

刚刚在我自己的网站上进行了测试,它可以无缝运行!

于 2021-05-21T18:59:29.947 回答