Je fais mon premier déambulateur personnalisé pour créer un menu accordéon. Pour commencer, j'ai utilisé cet exemple: http://bitacre.com/2025/custom-nav-menu-walker-for-wordpress-themes
Il y a deux fonctions. Commencez par start_lvl puis start_el.
Dans start_el, l'ID est implémenté par $ item-> ID. Est-ce que quelqu'un sait aussi comment je peux faire ça dans start_lvl? Je dois donner à (la navigation de niveau inférieur environnant) un identifiant afin que je puisse le déclencher pour s'effondrer dans le menu accordéon.
Ce que j'essaye de générer est quelque chose comme ceci:
<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>
Mon code pour la fonction 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";
}
la source
J'ai eu un problème similaire et l'ai résolu en utilisant une variable statique à l'intérieur de la classe:
Et puis dans le "display_element" j'ai incrémenté la variable:
Dans mon code, j'ai ensuite référencé dans la fonction start_lvl quelque chose comme ceci:
Cela n'utilise pas l'ID de page, mais il utilise un ID unique pour les instructions UL qui peuvent être référencées par le javascript.
BTW - C'est vraiment juste utile pour les accordéons imbriqués ou les listes déroulantes imbriquées cliquables dans le thème Roots à l'aide de Bootstrap pour les applications mobiles.
la source
Vous pouvez utiliser le filtre suivant dans votre
start_el
fonction et supprimer votre argument dans lastart_lvl
fonction.Veuillez me faire savoir si cela fonctionne.
la source
Vous pouvez simplement ajouter $ page à l'argument du marcheur personnalisé:
Essayez ce qui précède, puis avant d'appeler wp_list_pages (), ajoutez la classe walker personnalisée:
Ensuite, dans les arguments de wp_list_pages:
Vérifiez et voyez si la sortie du déambulateur est rouge.
la source