1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Individueller Menü Walker

Dieses Thema im Forum "Konfiguration" wurde erstellt von B1fr0st, 25. Mai 2011.

  1. B1fr0st

    B1fr0st Member

    Registriert seit:
    25. Mai 2011
    Beiträge:
    7
    Zustimmungen:
    0
    Hallo Leute,

    nach langer Suche im Web hat es mich doch noch mit meinem Problem hierher verschlagen.

    Für ein WP-Theme möchte ich ein idiotensicheres Menü erstellen, dass sich im Administrationsbereich leicht konfigurieren lässt. Ein Menü zu registrieren und die einfacheren Sachen haben ohne Probleme geklappt.
    Nun möchte ich, dass mein Menü ungefähr so aussieht:

    home | store | about

    und nicht so:

    homestoreabout

    Zwischen 2 Menüpunkten soll immer ein Strich eingefügt werden und zwar als
    HTML:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Dazu muss ich einen modifizierten Menü Walker in meiner functions.php haben und übergeben.

    Momentan sieht er noch ganz regulär/standart aus:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Außerdem möchte ich, dass nur "Top-level Menüpunkte" in die finale html Ausgabe kommen und Menüpunkte mit einer "depth != 0" ignoriert werden.


    Zwas kann ich ein wenig php, doch diese 2 Probleme überfordern mich, da ich auch nach langem Lesen aus den Wordpress Funktionen nicht so ganz schlau werde.

    Bitte kann mir jemand helfen!! :sad:
     
  2. Marcus.Kober

    Marcus.Kober Well-Known Member

    Registriert seit:
    6. Oktober 2010
    Beiträge:
    54
    Zustimmungen:
    0
    Hallo!

    Für die Beschäftigung mit Walkern wäre es natürlich von Vorteil, wenn die PHP-Kenntnisse schon ein wenig besser wären. Aber man lernt ja mit der Materie. :)

    Der Walker, den Du dir basteln musst, braucht die Function start_el gar nicht, sondern nur end_el, weil dort das schließende </li> sitzt.

    Der benötigte Walker sähe dann so aus:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Dabei wird an das schließende </li> dein zusätzlicher Listenpunkt angehängt, wenn die Tiefe = 0 ist (also nur für die Elternelemente).

    Mit folgendem Aufruf kannst Du das Menü anzeigen lassen. Hier stellst Du auch ein, dass Du nur Toplevel-Elemente anzeigen willst (depth => 1):

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Hoffe, das hat geholfen! :)

    Gruß,
    Marcus
     
  3. B1fr0st

    B1fr0st Member

    Registriert seit:
    25. Mai 2011
    Beiträge:
    7
    Zustimmungen:
    0
    Arigatou!!

    Vielen Dank für deine Hilfe!!

    Oh man, man merkt echt, dass ich mich mit der Funktionsweise von Wordpress noch nicht wirklich auskenn.
    Du hast mir echt ne coole Lösung Präsentiert, aber ganz ist es noch nicht das, was ich will!

    Nach dem letzten Menüelement soll kein Trennstrich gesetzt werden.

    Die momentane Ausgabe: home | store | about |
    soll so aussehen: home | store | about

    Dazu nehm ich mal an, dass ich das ganz easy in das 'if' mit reinschreiben kann oder muss ich da mit dem WP_Query->post_count() irgendwas basteln?

    Wenn mir nochmal kurz wer helfen könnte, wäre ich sehr dankbar!! :neutral:
     
    #3 B1fr0st, 26. Mai 2011
    Zuletzt bearbeitet: 26. Mai 2011
  4. B1fr0st

    B1fr0st Member

    Registriert seit:
    25. Mai 2011
    Beiträge:
    7
    Zustimmungen:
    0
    Closed

    Dieses Thema wurde dank Marcus.Kober's Hilfe erfolgreich gelöst!! :D

    Hier die Lösung für alle, die ein ähnliches Problem haben:

    header.php
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    functions.php
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Zur Lösung geholfen hat mir neben der Antwort von Marcus:

    http://helpfulcoder.com/2768/separate-wordpress-menu-items-tutorial/
    (Bitte beachten, dass eine Zeile im Artikel über den Rand ragt!!)

    und die WP Dokumentation:

    http://codex.wordpress.org/Function_Reference/wp_nav_menu

    CLOSED :cool:
     
  5. Marcus.Kober

    Marcus.Kober Well-Known Member

    Registriert seit:
    6. Oktober 2010
    Beiträge:
    54
    Zustimmungen:
    0
    Sorry, das war ein Schnellschuss gestern... :)

    Um zu bewerkstelligen, dass der Trenner an den Außenseiten nicht auftaucht, brauchst Du doch start_el. Damit schaffst Du es, das Ziel nur mit dem Walker zu erreichen:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Aufruf:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Erklärung: der Inhalt der Variable $sep wird vor das sich öffnende <li> gesetzt. Am Anfang ist $sep noch leer, wird nach dem ersten Durchlauf aber auf den Separator-String gesetzt.

    So schaffst Du es, ohne das Menü mit explode auseinander zu nehmen und nur mit einem einzigen Aufruf. :)
     
  6. B1fr0st

    B1fr0st Member

    Registriert seit:
    25. Mai 2011
    Beiträge:
    7
    Zustimmungen:
    0
    OK, auch gut!

    Hi Marcus,

    wieder Danke für den Vorschlag!! Der funktioniert noch besser, als das, was ich als Lösung gefunden hab.

    Die if-Verschachtelung ist übrigens richtig clever!! Man merkt, dass du länger im Geschäft bist, als ich.

    Ich hab aber noch eine kleine/große Frage, die ich in ein neues Thema schreiben werde. Vielleicht kannst du dir das dann auch nochmal ansehen??
    (Es geht um den selben Walker, aber im speziellen um eine WP Funktion)


    DOUBLE CLOSED!! :cool: :cool:
     
    #6 B1fr0st, 27. Mai 2011
    Zuletzt bearbeitet: 27. Mai 2011
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden