Suporte » Plugins » Como adiciona classe dentro do menu (ul/li)

  • E aí blz?
    Como faço no functions.php para inserir automaticamente classes no ul/li ?

    
    function wp_menu() {
        register_nav_menus(
            array(
                'main' => __( 'Main Menu' ),
                'top' => __( 'Top menu' ),
                'left' => __( 'Left menu' ),
                'right' => __( 'Right menu' ),
                'bottom' => __( 'Bottom menu' )
            )
        );
    }
    add_action( 'init', 'wp_skeleton_menu' );
Visualizando 1 resposta (de um total de 1)
  • Moderador Felipe Elia

    (@felipeelia)

    Oi @yankee-wolf,

    A chamada à register_nav_menus só serve para registrar menu locations no tema, ou seja, criar aqueles checkboxes abaixo dos itens do menu na tela de edição e criar a possibilidade de colocar no código o menu selecionado pelo usuário através da função wp_nav_menu. É através da wp_nav_menu que você também poderá acrescentar classes na <ul>.

    Para a <li> você precisará do filtro nav_menu_css_class, como no código abaixo, que adiciona a classe “active” nas <li> que já possuem determinadas classes:

    function special_nav_class($classes, $item) {
        if( in_array('current-menu-item', $classes) OR 
        	in_array('current-menu-ancestor', $classes) OR 
        	in_array('current-page-ancestor', $classes) OR 
        	in_array('current_page_parent', $classes)) {
    		
    		$classes[] = "active";
        }
        return $classes;
    }
    add_filter('nav_menu_css_class' , 'special_nav_class' , 10 , 2);

    Ah, um ponto de atenção no seu código: o segundo parâmetro do add_action deve ser o nome da função que você declarou, ok? Troque wp_menu por wp_skeleton_menu.

    Se não tiver mais nenhuma dúvida não esqueça de marcar o tópico como resolvido 🙂

    • Esta resposta foi modificada 3 anos, 11 meses atrás por Felipe Elia. Razão: marcação de código
Visualizando 1 resposta (de um total de 1)
  • O tópico ‘Como adiciona classe dentro do menu (ul/li)’ está fechado para novas respostas.