it-swarm.com.de

Markieren Sie die übergeordneten Menüelemente des aktuellen Beitragsvorfahren

Die Standard-Menüklassen in WordPress sind sehr nützlich. Aber ein Problem, über das ich von Zeit zu Zeit stolpere, sind Kategorien als Unterelemente in Menüs. Zum Beispiel die folgende Menüstruktur:

  • Seite 1
  • Seite 2
    • Kategorie 1
  • Seite 3

Wenn also Category 1 aktiv ist, erhält Page 2 einen .current-menu-ancestor, was in Ordnung ist… aber sobald ein Beitrag von Category 1 angezeigt wird, hat Page 2 keine spezifischen Klassen… Aber Category 1 hat .current-menu-ancestor wie erwartet.

Zum Schluss noch die Frage: Wie ordne ich diesen .current-post-ancestor Eltern eine Klasse zu?

Ich suche nach einer PHP Lösung. Javascript/jQuery ist ziemlich klar ... hier ist eine jQuery-Lösung, um besser zu verstehen, was ich tun möchte (und für diejenigen, die das gleiche Problem haben und mit einer JS-Lösung zufrieden sind):

jQuery( 'li.current-post-ancestor' ).parents( 'li.menu-item' ).addClass( 'current-menu-ancestor' );
1
GDY

Sie könnten https://codex.wordpress.org/Class_Reference/Walker verwenden, und wenn Sie aktive Eltern erkennen möchten, könnten Sie verwenden.

if ( in_array( 'current-menu-ancestor', $classes) ) {
    $class_names .= ' is-active';
}
1
mcgoo

Dies ist wahrscheinlich, was Sie suchen ..

add_filter( 'wp_nav_menu_objects', 'add_menu_parent_class' );
function add_menu_parent_class( $items ) {

    $parents = array();
    foreach ( $items as $item ) {
        if ( in_array('current-post-ancestor', $item->classes)  ) {
            $parents[] = $item->menu_item_parent;
        }
    }

    foreach ( $items as $item ) {
        if ( in_array( $item->ID, $parents ) ) {
            $item->classes[] = 'current-menu-ancestor'; 
        }
    }

    return $items;    
}

Es wird eine Klasse zu aktuellem übergeordneten Post-Vorfahren Menüelement hinzugefügt. Ich habe das in meinem Theme ausprobiert und es funktioniert perfekt.

0
Raitul Islam