Wordpress菜单 - 将类添加到锚点

Tim*_*URA 11 wordpress wordpress-theming

尝试将标准引导程序"nav-link"类添加到Wordpress菜单呈现的锚点.至今 ...

1 /我可以将变量传递给wp_nav_menu()

<?php wp_nav_menu(array(
                            'theme_location' => 'header-menu',
                            'menu_class' => 'navbar-nav',
                            'container' => 'false'
        ) );
        ?>
Run Code Online (Sandbox Code Playgroud)

并将类应用于菜单,并删除包含div.

2 /然后我使用Wordpress外观>菜单UI将"nav-item"类应用于li标签.

问:如何将类应用于wordpress菜单锚点

Dav*_*ara 35

你可以使用WP nav_menu_link_attributes钩子做你需要的:

add_filter( 'nav_menu_link_attributes', function($atts) {
        $atts['class'] = "nav-link";
        return $atts;
}, 100, 1 );
Run Code Online (Sandbox Code Playgroud)

......或者如果你不喜欢闭包:

function add_link_atts($atts) {
  $atts['class'] = "nav-link";
  return $atts;
}
add_filter( 'nav_menu_link_attributes', 'add_link_atts');
Run Code Online (Sandbox Code Playgroud)

过滤菜单列表项

为避免使用WordPress菜单UI将类添加到菜单列表项,您可以利用'nav_menu_css_class'过滤器:

add_filter( 'nav_menu_css_class', function($classes) {
    $classes[] = 'nav-item';
    return $classes;
}, 10, 1 );
Run Code Online (Sandbox Code Playgroud)

  • @ 127.0.0.1是的,它们存在!查看`wp-includes / class-walker-nav-menu.php`第136和179行 (2认同)

Lar*_*ger 5

如果您的网站上有多个菜单,或者只是想灵活一些。您可以扩展wp_nav_menu内置函数:

只需添加add_a_class到您的wp_nav_menu功能:

wp_nav_menu(
    array(
        'theme_location'  => 'primary',
        'depth'           => 2,
        'container'       => 'div',
        'add_a_class'     => 'class1 class2',
        'fallback_cb'     => false,
    )
);
Run Code Online (Sandbox Code Playgroud)

在您的functions.php:

function add_additional_class_on_a($classes, $item, $args)
{
    if (isset($args->add_a_class)) {
        $classes['class'] = $args->add_a_class;
    }
    return $classes;
}

add_filter('nav_menu_link_attributes', 'add_additional_class_on_a', 1, 3);
Run Code Online (Sandbox Code Playgroud)