it-swarm.com.ru

Wordpress Menu - Добавить класс к якорям

Попытка добавить стандартный класс начальной загрузки «nav-link» к якорям, отображаемым в меню Wordpress. До сих пор ...

1/Я могу передать переменные в wp_nav_menu ()

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

и примените класс к меню таким образом, и удалите содержащий div.

2/Затем я использую Wordpress Внешний вид> Интерфейс меню, чтобы применить класс nav-item к тегам li.

В. Как мне применить класс к якорям WordPress меню

5
TimothyAURA

Вы можете делать то, что вам нужно, с помощью ловушки WP nav_menu_link_attributes:

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

... или если вам не нравятся замыкания:

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

Фильтр пунктов списка меню

Чтобы не использовать пользовательский интерфейс WordPress для добавления классов в элементы списка меню, вы можете воспользоваться фильтром nav_menu_css_class:

add_filter( 'nav_menu_css_class', function($classes) {
    $classes[] = 'nav-item';
    return $classes;
}, 10, 1 );
22
DavidCara

Параметры wp_nav_menu () не позволят вам добавить класс к вашим ссылкам с функциональностью по умолчанию. Это позволит вам заключить свой <a href="#"></a> в любой html-код, такой как <span class="wrapped-anchor"><a href="#"></a></span>, если вы используете:

<?php 
   $parameters = TimothyAURA->set_specific_parameters_you_want(); // i mean, realy fullfill the array with the options you want based on the docs.
   $parameters['before'] = '<span class="wrapped-anchor">';
   $parameters['after'] = '</span>';
   wp_nav_menu($parameters);

В случае, если вам действительно нужно установить класс для ваших якорей, вам нужно будет передать объект Walker. Вы должны будете прочитать и понять это конкретные документы об этом, однако.

1
Rubén Marrero

Это позволяет добавлять классыТОЛЬКОк якорям определенного меню. Просто добавьте ваши классы в значения $menuClassMap ниже.

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

        $menuClassMap = [
            'navbar-menu' => 'my-footer-menu-link-class',
            'footer-menu' => 'my-footer-menu-link-class',
        ];

        $additionalClassName = $menuClassMap[$args->menu->slug] ?? '';

        if($additionalClassName){
            if(!array_key_exists('class', $atts)){
                $atts['class'] = '';
            }
            $classList = explode (' ' , $atts['class']);
            $classList[] = $additionalClassName;
            $atts['class'] = implode (' ' , $classList);
        }
        return $atts;

    }

    add_filter( 'nav_menu_link_attributes', 'mytheme__menu_anchors_add_css', 10, 3 );
0
Fusion