Element in wp-Menülistenelement einfügen
-
-
Ich weißnichtgenau die Antwort,aber wenn Siein Googlenach "WordPress Menu Walker" suchen,werden Sieeine Lösungfinden.I don't know exactly the answer, but if you make a search in google about "wordpress menu walker" you will find a solution.
- 1
- 2012-03-15
- andresmijares
-
Normalerweiseerreicheich dies überein Walker-Menü + über das Feld "Beschreibung"im nativen WP-Menü,damit Administratoren diesen zusätzlichen Text selbst hinzufügen können,ohne dassichprogrammatischetwastunmuss.:) Hieristein Artikel dazu: http://www.kriesi.at/archives/improve-your-wordpress-navigation-menu-outputI usually achieve this using a Walker menu + using the "description" field in the native WP menu so admins can add in that extra text themselves without me having to do anything programatic. :) Here's an article on how to do that: http://www.kriesi.at/archives/improve-your-wordpress-navigation-menu-output
- 1
- 2012-03-15
- Michelle
-
@Michelle: Danke Michelle,ichbin auch auf diesen Artikelgestoßen,habe aber keine Zeitgefunden,ihnmir anzusehen.Jetzt,woich von Ihnenermutigt wurde,werdeiches aufjeden Fall überprüfen.Klingtnacheinereleganten Lösung.Andererseitsist das Beschreibungsfeld statisch undichmuss die Variableinkrementieren.@Michelle: Thanks Michelle, I came across that article as well but didn't find time to take a look. Now that I got encouragement from you I'll check it out for sure. Sounds like an elegant solution. But then again, description field is static and I need to increment variable.
- 0
- 2012-03-15
- daniel.tosaba
-
1 Antworten
- Stimmen
-
- 2012-03-15
Sie könneneinen benutzerdefinierten Walker odernur Filtern Sie den Menütitel . Dies hängt von der Position ab,die Siefür Ihren zusätzlichen Inhaltbenötigen: Sollteer vor oderinnerhalb des Links angezeigt werden?
Beispielmit einem Walker
Update: Dies kanneigentlichnichtfunktionieren: Die übergeordnete Funktionerstellt den
<li
,sodass Sie diegesamte übergeordnete Funktion kopieren und anpassenmüssen.wp_nav_menu( array ( 'walker' => new WPSE_45647_Walker ) ); class WPSE_45647_Walker extends Walker_Nav_Menu { public function start_el( &$output, $item, $depth, $args ) { $output .= $this->custom_content( $item ); parent::start_el( &$output, $item, $depth, $args ); } /** * Create your extra content here. * @return string */ protected function custom_content( $item ) { // inspect the item and return your // custom content as a string } }
Beispielmit einem Filter
Hacker,aber vielleichteinfacher zu verstehen: Nehmen Sie den
<li>
undersetzen Sie<a
durch$custom <a
add_filter( 'walker_nav_menu_start_el', 'wpse_45647_add_custom_content', 10, 2 ); function wpse_45647_add_custom_content( $item_output, $item ) { static $counter = 0; // You may inspect $item and do something more creative here. $custom = ++$counter . ' Hello World!'; return str_replace( '<a ', $custom . '<a ', $item_output ); }
You could use a custom walker or just filter the menu title. It depends on the position you need for your extra content: Should it appear before or inside the link?
Example with a walker
Update: Actually, this cannot work: the parent function creates the
<li
, so you have to copy and adjust the whole parent function.wp_nav_menu( array ( 'walker' => new WPSE_45647_Walker ) ); class WPSE_45647_Walker extends Walker_Nav_Menu { public function start_el( &$output, $item, $depth, $args ) { $output .= $this->custom_content( $item ); parent::start_el( &$output, $item, $depth, $args ); } /** * Create your extra content here. * @return string */ protected function custom_content( $item ) { // inspect the item and return your // custom content as a string } }
Example with a filter
More hackish, but maybe easier to understand: Grab the
<li>
and replace<a
with$custom <a
add_filter( 'walker_nav_menu_start_el', 'wpse_45647_add_custom_content', 10, 2 ); function wpse_45647_add_custom_content( $item_output, $item ) { static $counter = 0; // You may inspect $item and do something more creative here. $custom = ++$counter . ' Hello World!'; return str_replace( '<a ', $custom . '<a ', $item_output ); }
-
Vor.Dankefür den Tipp Mann.Wennesnicht zu vielist,umein Beispiel zufinden,würdeichesbegrüßen.before. Thanks for the tip man. if it's not too much to come up with an example I would appreciate it.
- 0
- 2012-03-15
- daniel.tosaba
-
@ daniel.tosaba Ich habeein Beispiel Walker hinzugefügt.** Nichtgetestet. ** Entschuldigung,ich habenicht viel Zeit.Aberes sollte direine Richtunggeben.:) :)@daniel.tosaba I've added a sample Walker. **Not tested.** Sorry, I don’t have much time. But it should give you a direction. :)
- 1
- 2012-03-15
- fuxia
-
toller Mann .. vielen Dank ..ich werde heute alles hintermir lassen und dich später wissen lassen,wieesgelaufenist.great man.. thanks a lot.. i'll be all over it today and let you later know how it went.
- 0
- 2012-03-15
- daniel.tosaba
-
@ daniel.tosaba Alsich darübernachdachte,kamich zueiner anderen,vielleichtbesseren Lösung.Siehemein Update.@daniel.tosaba Thinking about this, I came to another, maybe better, solution. See my update.
- 0
- 2012-03-15
- fuxia
-
Dasistein großartiger Mann.Ichbin gerade dabei.Vielen Dankfür Ihre Zeit und Mühe!that's awesome man. i am right now getting on it. thank you so much for your time & effort!!
- 0
- 2012-03-15
- daniel.tosaba
-
Wie würden Sie vor dem Verknüpfenmithilfe der Filtermethodeeinen geeigneteninkrementellen Wert hinzufügen?1,2,3,4 usw.Vielen Dank!How would you add appropriate incremental value before link using filter method? 1,2,3,4,etc. Thanks!
- 0
- 2012-03-16
- daniel.tosaba
-
GROSSARTIG!!Das war so lahm vonmir ...GREAT!! Thas was so lame of me...
- 0
- 2012-03-16
- daniel.tosaba
-
Wie sind Sie auf diesen Filterhakengekommen?Istes dokumentiert?How did you come up with that filter hook. Is it documented??
- 0
- 2012-03-16
- daniel.tosaba
-
@ daniel.tosaba Ich schaue zuerst auf den Quellcode: `wp-includes/nav-menu-template.php` sagt Ihnenfast alles,was Sie wissen wollen.@daniel.tosaba I look at the source code first: `wp-includes/nav-menu-template.php` tells you almost everything you want to know.
- 0
- 2012-03-16
- fuxia
-
Ich habees selbst hiergefunden: http://adambrown.info/p/wp_hooks/hook/walker_nav_menu_start_el zusammenmit der Liste andererpotenziellnützlicher Hooks.Danke,Mann!Found it myself here: http://adambrown.info/p/wp_hooks/hook/walker_nav_menu_start_el all along with the list of other potentially useful hooks. Thanks man!
- 0
- 2012-03-16
- daniel.tosaba
-
Verlassen Sie sichnicht aufexterne Quellen,sondern verwenden Sie die WordPress-Quelle.Mein Plugin [Liste aller Aktionen] (https://gist.github.com/1979171) zeigt alle Hooks an,die währendeinereinzelnen Anforderung aufgerufen wurden.Don’t rely on external sources, use the WordPress source. My plugin [All Actions List](https://gist.github.com/1979171) shows all hooks called during a single request.
- 0
- 2012-03-16
- fuxia
-
Nochbesser,ich lade das Plugingerade herunter !!!Even better, I am downloading that plugin right now!!!
- 0
- 2012-03-16
- daniel.tosaba
-
Hey Toscho,mein sachkundiger Freund,wie kannich var_dump $item array überall dorteinsetzen,woich will?Danke,MannHey Toscho, my knowledgeable friend, how can I var_dump $item array anywhere I want?? Thanks man
- 0
- 2012-03-19
- daniel.tosaba
-
[Stellen Sieeine neue Frage.] (Http://wordpress.stackexchange.com/questions/ask)[Ask a new question.](http://wordpress.stackexchange.com/questions/ask)
- 0
- 2012-03-19
- fuxia
-
Ich werdein einer Sekunde Mann. Ich habeeine,diemit dieser verbundenist undesnervtmich.Also habeich Walker_Naverweitert ... undeine neue Klassein meine `functions.php`eingefügt,abericherhalteimmer wieder die Nachrichtin meinem Apache-Protokoll:` [Mon Mar 19 13:38:44 2012] [error] [client 127.0.0.1] PHPWarnung: call_user_func_array ()erwartet,dass Parameter 1ein gültiger Rückrufist,Klasse 'newgordon_menu'nichtin/var/www/wordpress/wp-includes/nav-menu-template.phpin Zeile 475gefunden. Es sieht so aus,als würdeichplatzierenes aneinerfalschen Stelle,daich `wp_nav_menu` ausmeiner Indexvorlagendatei aufrufenmöchte.I will man in a second.. I have one which is connected with this one and it's bugging me. So I extended Walker_Nav... and placed new class in my `functions.php` but I keep getting message in my apache log: `[Mon Mar 19 13:38:44 2012] [error] [client 127.0.0.1] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'new gordon_menu' not found in /var/www/wordpress/wp-includes/nav-menu-template.php on line 475` It looks like I am placing it in a wrong place, as I wish to call `wp_nav_menu` from my index template file.
- 0
- 2012-03-19
- daniel.tosaba
-
Hierist der var_dump http://wordpress.stackexchange.com/questions/46135/how-to-var-dump-item-from-anywherehere is the var_dump http://wordpress.stackexchange.com/questions/46135/how-to-var-dump-item-from-anywhere
- 0
- 2012-03-19
- daniel.tosaba
-
Ich habe herausgefunden,dassicheinen falschen Walker-Anruf hatte.funktioniertjetzt !!;)figured out that i had erroneous walker call. works now!! ;)
- 0
- 2012-03-19
- daniel.tosaba
Ichbin mirnicht sicher,ob aus dem Titel klar hervorgeht,wasich hiererreichenmöchte. Lassen Siemich versuchen,dies zu klären.
Ichmöchte das Menüsystem von Wordpress verwenden undmusses anmeine Bedürfnisse anpassen. Diesbedeutet,dassiches von hier :
ausführenmussbis hierher :
Was wäre derbeste Weg,um dies zuerreichen? Benötigen Sienureine kurze Anleitung,um dorthin zugelangen undes selbst zutun,ohne zu viel Zeit zu verlieren,umeine geeignete Lösung zufinden.
Istes das
wp_nav_menu()
oderwp_get_nav_menu_items()
,dasich untersuchen sollte? Eine kurze Probe wäre auch dankbar,wennesnicht zu viel verlangt. Undnochetwas .. Ich würdemich übereinen Tippfreuen,wiemaneine Nummerin demeingefügtendiv
generiert,der das Erscheinungsbild der Menüposition darstellt: 1,2,3 usw. Gibteseine Möglichkeit,dies aus dem Kern von Wordpress zu übernehmen?Vielen Dank. Jede Hilfegeschätzt.