Dies ist mein erstes Projekt mit WordPress, und ich habe versucht, einen benutzerdefinierten Walker für ein Fußzeilenmenü zu erstellen.
Grundsätzlich möchte ich das Menü von der <ul> <li></li> </ul>
Struktur in eine <p> <span></span> </p>
Struktur ändern .
Das Menü und das Zeug zeigen eine Datei an und ich konnte die start_el
und end_el
Funktionen ohne Probleme anpassen , so dass ich jetzt Folgendes bekomme:
<ul> <span>*link*</span> <span>*link*</span> </ul>
Was offensichtlich auf halbem Weg ist, ich habe die start_lvl()
und end_lvl()
Tags wie unten gezeigt geschrieben, aber sie werden von WordPress ignoriert - nichts, was ich in sie (sogar die()
) eingefügt habe, wird ausgeführt (was ein bisschen verdächtig ist), aber ich weiß, dass die Klasse wegen aufgerufen wird die start_el()
Funktion.
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";
}
Weiß jemand, warum das passiert - habe ich etwas wirklich Offensichtliches verpasst?
Ich verwende die neueste Version von WordPress auf Apache mit PHP, 5.3.6
wenn es hilft.
Danke im Voraus,
Felix :)
Antworten:
Ihre my_extended_walker-Klasse ist in Ordnung, aber wenn Sie die Funktion wp_nav_menu aufrufen , verwenden Sie den Parameter items_wrap .
Das start_lvl wird für untergeordnete Elemente verwendet.
quelle
Ok, ich bin mir nicht sicher, was ich falsch gelesen habe, als ich das gepostet habe, aber deine ganze Klasse sollte ungefähr so aussehen:
Und übergeben Sie dann beim Aufruf den 'Walker' als Parameter
wp_nav_menu
wp_nav_menu( array( 'walker'=>new my_extended_walker() ) );
Wenn Sie das haben, sollte es Ihnen gut gehen. Ich schaue auf Arbeitscode, der genau das tut. Ich weiß allerdings nicht, wie man dort
<p>
Tags einfügt. Möglicherweise erhalten Sie ein ungültiges Markup.quelle
<div>
anstatt<p>
nur zu sehen, ob ich diese Funktionen dazu bringen kann, etwas zu tun, aber bisher keine Freude :(<div>
und<p>
sollte den Walker nicht beschädigen, kann aber zu einem ungültigen Markup führen. Du hast$output =
und nicht$output .=
in deinemstart_lvl
. Das könnte Ärger verursachen. Ist das der komplette Walker, den du gepostet hast?.=
Bit dies nun die komplette Klasse (I die entferntstart_lvl()
undend_lvl()
Funktionen zu sehen , ob sie einen Unterschied gemacht) - pastebin.com/zfcBxHd8Haben Sie darüber nachgedacht, alle Navigationsmenüelemente mit der integrierten Funktion
wp_get_nav_menu_items();
abzurufen und den Inhalt manuell auszugeben?Beispiel :: Erstellen einer einfachen Menüliste
quelle