Ícone do site Código WP

Como Adicionar um Menu Bootstrap a um Tema WordPress?

Como adicionar menu bootstrap ao tema wordpress

Uma dúvida que volta e meia recebo dos alunos do meu curso de desenvolvimento de temas com WordPress diz respeito a adicionar o famoso menu sanduíche no tema. Durante o curso eu prefiro usar um plugin para adicionar esse menu, tanto por razões didáticas quanto para otimizar a duração do curso. Mas existem aqueles que, com razão, não gostam de adicionar muitos plugins aos temas, querendo saber como fazem para adicionar um menu Bootstrap a um tema WordPress.

Para esses, felizmente, existe uma forma bastante fácil de adicionar o menu responsivo, usando uma classe chamada WP Bootstrap Nav Walker. Essa classe é totalmente compatível com as diretrizes de criação de temas do próprio WordPress. Quer dizer que você pode adicionar no seu tema tranquilamente caso o seu desejo seja enviar o tema para o repositório do WordPress, ou mesmo para o ThemeForest da Envato.

A classe já está otimizada para uso com a versão 4 do Bootstrap, mas também existe uma versão dela para Bootstrap 3.

Aqueles que preferem ver um tutorial em vídeo podem assisti-lo logo abaixo:

Certo, vamos começar então…

Como Adicionar um Menu Bootstrap a um Tema WordPress

A primeira coisa que você vai precisar para que esse tutorial funcione é registrar o seu menu no arquivo functions.php.

Então, caso ainda não tenha uma posição de menu disponível, abra lá o seu arquivo functions.php e adicione o seguinte:

// Registrando um menu
register_nav_menus(
    array(
        'meu_menu' => __( 'Menu Principal', 'meu-text-domain' )
    )
);

Baixe uma cópia do arquivo class-wp-bootstrap-navwalker.php visitando a página do projeto em https://github.com/wp-bootstrap/wp-bootstrap-navwalker (para o Bootstrap 3, o link é https://github.com/wp-bootstrap/wp-bootstrap-navwalker/tree/v3-branch).

Coloque uma cópia deste arquivo (somente dele, ok) dentro da pasta do seu tema. Pode ser, por exemplo, dentro de algum outro subdiretório que você queira criar. Para este tutorial eu criarei um subdiretório chamado inc dentro do diretório principal do meu tema.

Chame o arquivo dentro do arquivo functions.php deste jeito:

// Register Custom Navigation Walker 
require_once get_template_directory() . '/inc/class-wp-bootstrap-navwalker.php';

A T E N Ç Ã O: Se estiver usando Bootstrap 3, o nome do arquivo é somente wp-bootstrap-navwalker.php.

A T E N Ç Ã O 2: este menu não funciona ainda com Bootstrap 5! Caso tente usar com Bootstrap 5, o menu não será clicável.

Um detalhe importante é que essas linhas de código devem ficar logo no início do seu arquivo functions.php, ok?

Agora, basta você achar o ponto do tema onde quer adicionar o menu, que geralmente é o arquivo header.php. Você vai usar pra isso a função wp_nav_menu(), só que vamos passar alguns parâmetros a mais dentro do array da função. Ela vai ficar da seguinte forma:

wp_nav_menu( array(
    'theme_location'    => 'meu_menu',
    'depth'             => 2,
    'container'         => 'div',
    'container_class'   => 'collapse navbar-collapse',
    'container_id'      => 'bs-example-navbar-collapse-1',
    'menu_class'        => 'nav navbar-nav',
    'fallback_cb'       => 'WP_Bootstrap_Navwalker::fallback',
    'walker'            => new WP_Bootstrap_Navwalker(),
) );

Os argumentos que vêm logo após o theme_location (usada para você indicar o identificador do seu menu) servirão pra construir a marcação HTML do menu responsivo exatamente como o Bootstrap exige:

A marcação completa do seu menu deverá ficar mais ou menos assim:

<nav class="navbar navbar-expand-md navbar-light bg-light" role="navigation">
    <div class="container">
        <!-- Brand and toggle get grouped for better mobile display -->
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-controls="bs-example-navbar-collapse-1" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <a class="navbar-brand" href="<?php echo home_url(); ?>">
            <?php bloginfo('name'); ?>
        </a>
        <?php
        wp_nav_menu( array(
            'theme_location' => 'meu_menu',
            'depth' => 2,
            'container' => 'div',
            'container_class' => 'collapse navbar-collapse',
            'container_id' => 'bs-example-navbar-collapse-1',
            'menu_class' => 'nav navbar-nav',
            'fallback_cb' => 'WP_Bootstrap_Navwalker::fallback',
            'walker' => new WP_Bootstrap_Navwalker())
        );
        ?>
    </div>
</nav>

Com isso feito você pode incluir alguma classe customizada. Por exemplo, você pode adicionar classes Bootstrap ao argumento menu_class.

Você pode também substituir o nav-bar-brand por algo mais customizado. O resultado será algo mais ou menos parecido com isso (menu aberto):

É isso! Espero que este tutorial possa ter sido útil!

Agora, se você quer se aprofundar nesse tema, te convido a conhecer nosso curso sobre criação de temas WordPress. Depois de terminar o curso, assuntos como os desse post vão ficar incrivelmente fáceis pra você.

Clique aqui e comece a ver as primeiras aulas de graça agora mesmo!

Sair da versão mobile