Ich mache meinen ersten Custom-Walker, der ein Akkordeon-Menü zusammenstellt. Zunächst habe ich dieses Beispiel verwendet: http://bitacre.com/2025/custom-nav-menu-walker-for-wordpress-themes
Es gibt zwei Funktionen. Zuerst start_lvl und dann start_el.
In start_el wird die ID durch $ item-> ID implementiert. Weiß jemand, wie ich das auch in start_lvl machen kann? Ich muss der (umgebenden untergeordneten Navigation) eine ID geben, damit sie im Akkordeonmenü ausgeblendet wird.
Was ich versuche zu generieren, ist ungefähr so:
<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>
Mein Code für die start_lvl Funktion:
// 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";
}
quelle
Ich hatte ein ähnliches Problem und löste es mithilfe einer statischen Variablen in der Klasse:
Und dann habe ich im "display_element" die Variable erhöht:
In meinem Code habe ich dann in der Funktion start_lvl so etwas referenziert:
Dies verwendet nicht die Seiten-ID, sondern eine eindeutige ID für UL-Anweisungen, auf die das Javascript verweisen kann.
Übrigens - Dies ist wirklich nur nützlich für verschachtelte Akkordeons oder klickbare verschachtelte Dropdowns im Roots-Design mit Bootstrap für mobile Apps.
quelle
Sie können den folgenden Filter in Ihrer
start_el
Funktion verwenden und Ihr Argument in derstart_lvl
Funktion grubben .Bitte lassen Sie mich wissen, ob es funktioniert.
quelle
Sie können einfach $ page zum Argument des benutzerdefinierten Walkers hinzufügen:
Versuchen Sie es wie oben und fügen Sie die benutzerdefinierte Walker-Klasse hinzu, bevor Sie wp_list_pages () aufrufen:
Dann in den Argumenten für wp_list_pages:
Überprüfen Sie, ob der Ausgang des Laufwagens rot ist.
quelle