CRIAR MENU DROPDOWN SEM PLUGINS COM O WORDPRESS

Um menu do tipo dropdown possui a particularidade de exibir os subitens no momento em que você posiciona o mouse sobre o item pai. São amplamente explorados para melhor dividir e organizar as informações de navegação de um site, além de trazer um bom apelo visual para o visitante. O fator interatividade do menu também é outro ponto positivo, já que ao ocultar itens provoca a curiosidade do internauta para descobrir o conteúdo escondido.

ADICIONE O SUPORTE A MENUS

Caso o tema que esteja utilizando não tenha suporte à menus, abra o arquivo functions.php e adicione as seguintes instruções:

1
register_nav_menu( 'main-menu', 'Menu Principal' );

Nesse passo registramos o menu com identificador main-menu e nome Menu Principal através dos parâmetros passados. A seguir escolheremos o local do tema que desejamos exibir esse menu. Normalmente os menus localizam-se no topo das páginas, caso queira dessa forma também, abra o arquivo header.php e insira onde melhor se adequar o menu ao template:

1
2
3
<div id="menu">
    <?php wp_nav_menu( array( 'location'=>'main-menu', 'container'=>'div', 'container-class'=>'menu', 'menu_class'=>'ul-menu' ) ); ?>
</div>

Na função wp_nav_menu identificamos o menu criado para ser exibido no referido espaço e os parâmetros de container fazem o menu ser envolvido por uma div (tag HTML) com a classe ‘menu’, enquanto que a classe da lista não-ordenada do menu foi definida para diferenciar da classe da div.

EXIBINDO MENUS

Após ter inserido os códigos nos arquivos do tema, abra-o e veja os valores retornados e o menu gerado pela função. Se você seguiu os passos e não possui menus criados no WordPress o resultado será a listagem das páginas, isso porquê a função wp_nav_menu executa a função wp_page_menu por padrão se nenhum menu for encontrado.

Essa é a razão de colocarmos o menu dentro da div com classe menu, pois também por default, a função alternativa gera uma div instanciada com a classe de mesmo nome. Dessa maneira o menu será exibido da mesma forma independente de ter sido criado ou não e possuirá a marcação semelhante a essa:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<div id="menu">
    <div class="menu">
        <ul>
            <li id="item-1" class="page_item page-item-1">
                <a href="http://localhost/wordpress/?page_id=1" title="Item 1">Item 1</a>
            </li>
            <li id="item-2" class="page_item page-item-2">
                <a href="http://localhost/wordpress/?page_id=2" title="Item 2">Item 2</a>
            </li>
            <li id="item-3" class="page_item page-item-3">
                <a href="http://localhost/wordpress/?page_id=3" title="Item 3">Item 3</a>
            </li>
            <li id="item-4" class="page_item page-item-4">
                <a href="http://localhost/wordpress/?page_id=4" title="Item 4">Item 4</a>
                <ul class='children'>
                    <li id="item-5" class="page_item page-item-5">
                        <a href="http://localhost/wordpress/?page_id=5" title="Item 5">Item 5</a>
                    </li>
                    <li id="item-6" class="page_item page-item-6">
                        <a href="http://localhost/wordpress/?page_id=6" title="Item 6">Item 6</a>
                    </li>
                </ul>
            </li>
        </ul>
    </div>
</div>

GERENCIANDO MENUS PELO WORDPRESS

Abra seu painel administrativo e clique em Aparência, e em seguida no item Menus localizado no menu lateral. Nessa tela de edição de menus adicione os itens das caixas auxiliares e arraste-os como bem entender de modo a compor o melhor menu que adeque ao seu site. Posicione determinado item embaixo de outro e arraste-o para frente para definí-lo como filho do item acima localizado.

No caso da listagem alternativa de páginas para o caso de não existir menu criado, você pode definir uma página como filha de outra na tela de edição de páginas. Localize a caixa Atributos de página, normalmente à direita da caixa de edição de texto e escolha uma outra página qualquer no campo Mãe.

ESTILIZE SEU MENU COM CSS

Iremos agora formatar o modo como o menu será exibido dentro do template. Para isso inclua em seu arquivo style.css as seguintes linhas:

1
2
3
4
5
#menu { float: left; width: 100%; height: 50px; }
#menu li { float: left; padding: 10px 20px; }
#menu li ul { display: none; position: absolute; }
#menu li ul li { display: block; float: none; padding: 5px 10px; }

Além dessas marcações você pode explorar o visual do modo que tenha uma melhor apresentação ao seu visitante, as informação passadas são a base para o funcionamento do efeito dropdown. Note que obedecemos a estrutura para ambas as funções e definimos de modo prático que:

  • width: 100% – O menu ocupará a tela toda;
  • float: left – Os itens primários exibidos lado a lado;
  • display: none – Os subitens não serão exibidos inicialmente;
  • display: block; float: none – Os subitens quando mostrados estarão um abaixo do outro;

INTERACÇÃO COM JAVASCRIPT

Usaremos a biblioteca jQuery para fazer aparecer e tornar a ocultar os subitens de acordo com a interação do usuário. Incorpore o seguinte código javascript a sua página header.php, dentro da metatag :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php wp_enqueue_script( 'jquery' ); ?>
<script type="text/javascript">
jQuery(document).ready(function($)
{
    $("#menu ul li").each(function() {
        var el = $('#' + $(this).attr('id') + ' ul:eq(0)');
        $(this).hover(function() {
            var n_left = $(this).position().left;
            var n_top = $(this).position().top + 50;
            var n_width = $(this).width() + 40;
            el.css('left', n_left);
            el.css('top', n_top);
            el.css('width', n_width);
            el.show();
        }, function(){
            el.hide();
        });
    });
});
</script>

O valor 50 diz respeito a altura do menu, enquanto que 40 é o valor do padding (margem interna) que criamos. Em poucas palavras esse código irá:

  • Alternar a exibição dos subitens;
  • Posicionar o submenu abaixo do item que estiver com o mouse parado;
  • Igualar a largura do submenu com a do item ao qual pertence.

EXPLORANDO OS SUB-NÍVEIS DO MENU

Ao aplicar a programação encontramos um pequeno problema: Ela funciona bem apenas para o primeiro nível do menu. Por exibir os subitens abaixo do item selecionado, quando vamos além do primeiro nível os itens se sobrepõe uns aos outros. A alternativa para esse caso é criar uma variação que leva o submenu a frente do item atual:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php wp_enqueue_script( 'jquery' ); ?>
<script type="text/javascript">
var level = 0;
jQuery(document).ready(function($)
{
    $("#menu ul li").each(function()
    {
        var el = $('#' + $(this).attr('id') + ' ul:eq(0)');
        $(this).hover(function()
        {
            var n_left = $(this).position().left;
            var n_top = $(this).position().top + 50;
            var n_width = $(this).width() + 40;
            if ( level > 0 ) {
                n_top -= 50;
                n_left += n_width;
            }
            el.css('left', n_left);
            el.css('top', n_top);
            el.css('width', n_width);
            el.show();
            level++;
        }, function(){
            el.hide();
            level--;
        });
    });
});
</script>

Abraços!

AVALIE GORA MESMO!
More from William Freitas

COMO CRIAR UM PERSONALIZADO DATA DE BOTÃO PARA WORDPRESS

Ao fazer seu blog se destacar, uma coisa que os blogueiros muitas...
Read More

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *