Este é o meu primeiro projeto envolvendo o WordPress e estou tentando criar um andador personalizado para um menu de rodapé.
Eu basicamente quero mudar o menu da <ul> <li></li> </ul>
estrutura para uma <p> <span></span> </p>
estrutura.
O menu e outras coisas estão exibindo o arquivo e eu pude ajustar as funções start_el
e end_el
sem problemas, então agora entendi o seguinte:
<ul> <span>*link*</span> <span>*link*</span> </ul>
Obviamente, a meio caminho, escrevi as tags start_lvl()
e end_lvl()
como mostrado abaixo, mas elas são ignoradas pelo WordPress - nada que eu coloque nelas (mesmo die()
) é executado (o que é um pouco suspeito), mas eu sei que a classe está sendo chamada por causa de a start_el()
função
function start_lvl(&$output, $depth = 0, $args = array()) {
$output = "\n<p class=\"sub-menu\">\n";
}
function end_lvl(&$output, $depth = 0, $args = array()) {
$output .= "\n</p>\n";
}
Alguém sabe por que isso está acontecendo - eu perdi algo realmente óbvio !?
Estou executando a versão mais recente do WordPress no Apache com PHP, 5.3.6
se isso ajudar.
Desde já, obrigado,
Felix :)
Respostas:
Sua classe my_extended_walker está OK, mas quando você chamar a função wp_nav_menu , use o parâmetro items_wrap .
O start_lvl é usado para elementos filhos.
fonte
Ok, não sei o que li errado quando postei isso, mas toda a sua classe deve ser algo como isto:
E depois passe o 'walker' como parâmetro quando você chamar
wp_nav_menu
wp_nav_menu( array( 'walker'=>new my_extended_walker() ) );
Se você tem isso, deve ficar bem. Eu estou olhando para o código de trabalho que faz exatamente isso. Não sei como colocar
<p>
tags lá. Você pode receber uma marcação inválida.fonte
<div>
, em vez de<p>
apenas para ver se eu posso obter essas funções para fazer qualquer coisa, mas até agora nenhuma alegria :(<div>
e<p>
não deve interromper o Walker, mas pode resultar em marcação inválida. Você tem$output =
e não está$output .=
no seustart_lvl
. Isso pode estar causando problemas. Esse é o Walker completo que você postou?.=
pouco isto agora é a classe completo (eu removi ostart_lvl()
eend_lvl()
funções para ver se eles fizeram uma diferença) - pastebin.com/zfcBxHd8Você já pensou em buscar todos os itens do menu de navegação usando a função
wp_get_nav_menu_items();
interna : e em gerar manualmente o conteúdo?Exemplo :: Criando lista de menus simples
fonte