Estou fazendo meu primeiro andador personalizado a criar um menu de acordeão. Para começar, usei este exemplo: http://bitacre.com/2025/custom-nav-menu-walker-for-wordpress-themes
Existem duas funções. Primeiro start_lvl e depois start_el.
Em start_el, o ID get é implementado por $ item-> ID. Alguém sabe como eu posso fazer isso no start_lvl também? Preciso fornecer um ID (para a navegação de nível inferior) para que eu possa acionar o recolhimento no menu sanfona.
O que estou tentando gerar é algo como isto:
<a href="#collapse2">Titel 2</a>
<ul id="collapse2">Lower Level Menu 2</ul>
<a href="#collapse3">Titel 3</a>
<ul id="collapse3">Lower Level Menu 3</ul>
Meu código para a função start_lvl:
// add id's and classes to ul sub-menus
function start_lvl( &$output, $depth, $item ) {
// depth dependent classes
$indent = ( $depth > 0 ? str_repeat( "\t", $depth ) : '' ); // code indent
$display_depth = ( $depth + 1); // because it counts the first submenu as 0
$pgid = ; // How to get ID in here??
$classes = array(
'sub-menu',
( $display_depth == 1 ? 'accordion-body collapse' : '' ),
( $display_depth % 2 ? 'menu-odd' : 'menu-even' ),
( $display_depth >=2 ? 'sub-sub-menu' : '' ),
'menu-depth-' . $display_depth
);
$ids = array(
'collapse' . $pgid
);
$class_names = implode( ' ', $classes );
$id_name = implode( ' ', $ids );
// build html
$output .= "\n" . $indent . '<ul id="' . $id_name . '" class="' . $class_names . '">' . "\n";
}
fonte
Eu tive um problema semelhante e o resolvi usando uma variável estática dentro da classe:
E então no "display_element" eu incrementei a variável:
No meu código, referenciei na função start_lvl algo como isto:
Isso não usa o ID da página, mas usa um ID exclusivo para instruções UL que podem ser referenciadas pelo javascript.
BTW - Isso é realmente útil apenas para acordeões aninhados ou menus suspensos aninhados clicáveis no Roots Theme usando o Bootstrap para aplicativos móveis.
fonte
Você pode usar o seguinte filtro em sua
start_el
função e agrupar seu argumento emstart_lvl
função.Por favor, deixe-me saber se funciona.
fonte
Você pode simplesmente adicionar $ page ao argumento do caminhante personalizado:
Experimente o exposto acima e, antes de ligar para wp_list_pages (), adicione a classe walker personalizada:
Em seguida, nos argumentos para wp_list_pages:
Verifique e veja se a saída do andador está vermelha.
fonte