Estoy haciendo mi primer andador personalizado para crear un menú de acordeón. Para empezar utilicé este ejemplo: http://bitacre.com/2025/custom-nav-menu-walker-for-wordpress-themes
Hay dos funciones Primero start_lvl y luego start_el.
En start_el, el ID se implementa mediante $ item-> ID. ¿Alguien sabe cómo puedo hacer esto en start_lvl también? Necesito darle una identificación (a la navegación de nivel inferior circundante) para que pueda provocar el colapso en el menú de acordeón.
Lo que intento generar es algo como esto:
<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>
Mi código para la función 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";
}
fuente
Tuve un problema similar y lo resolví usando una variable estática dentro de la clase:
Y luego en el "display_element" incrementé la variable:
En mi código, hice referencia en la función start_lvl algo como esto:
Esto no usa la ID de la página, pero sí usa una ID única para las declaraciones de UL a las que el javascript puede hacer referencia.
Por cierto, esto es realmente útil para acordeones anidados o desplegables anidados en el tema Roots usando Bootstrap para aplicaciones móviles.
fuente
Puede usar el siguiente filtro en su
start_el
función y arrancar su argumento enstart_lvl
función.Por favor, avíseme si funciona.
fuente
Simplemente puede agregar $ page al argumento del caminante personalizado:
Pruebe lo anterior y luego, antes de llamar a wp_list_pages (), agregue la clase de walker personalizada:
Luego, en los argumentos para wp_list_pages:
Verifique y vea si la salida del andador es roja.
fuente