active class in erster Menüebene

  • Hey,

    ich habe per custom menu einer Seite eine Kategorie untergeordnet. Wenn ich ein Beitrag innerhalb dieser Kategorie aufrufe, bekommt jedoch nur die zweite Menüebene eine class (in diesem Falle die Kategorie), dass diese gerade aktiv ist.

    Wenn ich aber nur Seiten untereinander verschachtel, bekommt auch die allererste Ebene noch die class "current-menu-ancestor".

    Gibt es eine Möglichkeit, dies in meinem Fall auch hinzubekommen? Bin gerade etwas ratlos.

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • [size=10]Hallo Philipp.
    [FONT=arial]Ich hab das gerade mal getestet.

    Kategorie als Menüpunkt hinzugefügt, Seite als Unterpunkt im Menü hinzugefügt.
    Dann die Seite (Untermenüpunkt) aufgerufen und in den Quelltext geguckt.

    Ergebnis: Der Link zur Seite hatte unter anderem als CSS-Klasse [COLOR=#000000]current-menu-item und die Kategorie (als übergeordneter Menüpunkt) unter anderem die CSS-Klasse [/COLOR][COLOR=#000000]current-menu-ancestor.

    Also alles ok!?[/COLOR][/FONT][/SIZE]

  • Nein du hast es leider falsch verstanden.

    Ich lege das Menü so an:

    _ Seite
    __ Kategorie
    _ Seite
    _ Seite
    _ Seite

    Der Kategorie sind ja dann Beiträge zugewiesen. Wenn ich jetzt einen Beitrag, der in "Kategorie" liegt aufrufe, bekomme ich nur current classes beim "Kategorie"-Punkt im Menü und nicht auch im ersten Level "Seite". Obwohl das ja im gleichen Menüzweig befindet.

  • ok. das hier macht wohl genau das, was ich gesucht habe:

    PHP
    add_filter( 'wp_nav_menu_objects', 'add_menu_parent_class' );function add_menu_parent_class( $items ) {        $parents = array();    foreach ( $items as $item ) {        if ( $item->menu_item_parent && $item->menu_item_parent > 0 ) {            $parents[] = $item->menu_item_parent;        }    }        foreach ( $items as $item ) {        if ( in_array( $item->ID, $parents ) ) {            $item->classes[] = 'menu-parent-item';         }    }        return $items;    }

    Einmal editiert, zuletzt von philippkuehn (10. August 2013 um 00:40)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!