Existem duas maneiras para você criar menus e sub-menus no wordpress.
Manual
Manual é a forma mais simples e provavelmente a mais usada.
Criar os links manualmente. Existem alguns contras:
- Se você escrever todos os links manualmente e tiver muitos links a manutenção deles se torna complexa e demorada, além do fato de outras pessoas que não entendem de código não terão acesso para modificá-los. Outro problema também fica por conta do caminho dos links ter que ser modificado para versões rodadas em localhost e versões online.
- Algumas pessoas usam o código em php que chama o link do banco de dados. Esse código adicionado dentro do link puxa o endereço da instalação do Worpdpress e automaticamente diz qual é o caminho certo, se é uma instalação online em um domínio ou se é offline qual pasta do seu servidor. O problema é que usar muitas vezes esse código em muitos links manuais faz um carregamento grande de requisições repetidas no seu servidor, podendo deixar o site lento. Para isso acabamos optando por criar menus automáticos
Automático
Menu com Páginas
Para puxar todas as páginas do wordpress automaticamente usamos o code:
<ul> <?php wp_list_pages(); ?></ul>
Esse código retorna todas as páginas publicadas no seu wordpress em itens de uma lista html:
<li class="pagenav">Páginas<ul><li class="page_item page-item-77"><a href="http://www.seusite.com/suapagina/" title="Sua Página">Sua Página</a></li>
Note que você tem que adicionar uma “ul” antes do código php. Pois se não seu HTML terá erros.
Acontece que ele pega todas as páginas e dependendo do caso precisamos passar alguns parâmetros para ter um resultado customizado para as nossas necessidades.
Abaixo mostro os parâmetros mais importantes para você poder filtrar os resultados.
depth
Esse parâmetro controla quantos levels você quer exibir de páginas e subpáginas (páginas contidas dentro de outras).
Ex 1: Mostrar só a “primeira fila” de páginas, aquelas que não estão dentro de nenhuma.
<ul> <?php wp_list_pages('depth=1'); ?> </ul>
title_li
Com esse parâmetro você pode arrancar o título “Paginas” ou “Pages” que vem junto com a lista.
Ex 2: Mostrar só as páginas que não estão dentro de nenhuma e arrancar o título Páginas
<ul> <?php wp_list_pages('depth=1&title_li='); ?> </ul>
Perceba que para colocar mais de um parâmetro dentro do código foi usado o & – serve para ligar os parâmetros.
exclude
Tem uma página que está exibindo e você não quer que ela apareça? Então iremos excluir ela pela sua ID, você precisa descobrir qual é a ID da página. ID é um número que identifica qual é a página para o WordPress. Para saber qual é a ID da página, va até o painel em editar páginas, coloque a seta do mouse em cima do link com o nome da Página e olhe na Barra de Status do seu navegador (aquela barra que fica lá embaixo e mostra o endereço da URL)

Esse número que aparece por último na URL é a ID da página. No nosso caso 16
Ex 3: Mostrar só as páginas que não estão dentro de nenhuma e arrancar o título Páginas e excluir a página serviços.
<ul> <?php wp_list_pages('depth=1&title_li=&exclude=16'); ?> </ul>
Se você quiser excluir mais de uma página basta colocar ponto e vírgula ; e colocar a outra id.
child_of
Este parâmetro exibe páginas que estão contidas dentro da página atual, por exemplo:
Estou na Página Serviços e quero que ele exiba as páginas contidas dentro dessa página. Para isso você tem que colocar o código dentro do Loop do arquivo page.php ou de outro template.
Porque o loop que identifica qual é a ID da página, para informar de qual página você está querendo exibir as subpáginas.
<ul> <?php wp_list_pages('title_li=&child_of='.$post->ID.''); ?> </ul>
Ainda existem outros parâmetros como exibir a data de criação, o formato da data, incluir uma página na lista. Não mostrar os resultados, apenas guardar em uma array, colocar um link antes ou depois etc. Deixo a página da documentação completa em Inglês para quem quiser aprender mais sobre essa função. Caso esteja fazendo alguma coisa e precise de ajuda personalizada, contrate a nossa consultoria.


Essa função só serve para fazer menu lateral, não para fazer o menu no cabeçalho.
Ainda não criaram um jeito legal de se fazer isso.
Têm um cara que criou um plugin mas vc têm de instalar os templates dele daí tem de alterar para o seu template.
Ou seja ainda não é para blogueiro só para programadores.
Acho que o wordpress é plataforma que fala mais de perto com o os não programadores, diferente de joomla, drupal, xoops.
Mas é claro ainda faltam algumas coisas a serem ajustadas aqui e ali…