wake-up-neo.com

In/(oder "zu Hause") erhält mein Menü keine aktuelle Menüelementklasse

Ich bin ein WordPress-Noob, der ein Thema bearbeitet, also versuche ich zu verstehen, wie es funktioniert. Ich habe über 10 verwandte Beiträge in SE gelesen, aber noch nicht verstanden. Mein Problem ist wie folgt:

header.php scheint das Menü zu generieren mit,

<?php wp_nav_menu(array('theme_location' => 'nav-menu','container'  => 'div', 'container_class' => 'menu' )); ?> 

Im wp-admin habe ich mit ein Menü erstellt

"Blog | Über | Kontakt"

die auf die Wurzel und zwei Seiten zeigen: "/" | "about" | "Kontakt" (sehr Standard). Jetzt möchte ich das Menü in Abhängigkeit von der Seite " active " gestalten. Für " about " und " contact " scheint dies sehr einfach zu sein. Zu den Klassen, die für jeden Menüpunkt generiert werden, gehört aktueller-Menüpunkt . Wenn Sie sich jedoch auf der Startseite befinden, werden in meinem "Blog" -Menü "li" nur die Klassen angezeigt

menu-item menu-item-type-custom menu-item-object-custom menu-item-47

und kann daher nicht entsprechend gestaltet werden. Ich habe einiges über das Filtern, Verwenden von Funktionen usw. gelesen, verstehe es aber nicht ganz. Wenn ich eine Funktion in functions.php definiere, wo würde ich sie danach verwenden.

Jeder Einblick und jede Hilfe wird sehr geschätzt.

2
Massagran

Um dies zu erreichen, müssen Sie zum Menü admin gehen und im Abschnitt pages auf die Registerkarte 'view all' klicken. Ganz oben in der Liste befindet sich eine spezielle Option für Ihre Homepage, unabhängig davon, ob es sich um die normale Blogansicht oder eine bestimmte Seite handelt. Fügen Sie das zum Menü hinzu und Sie sind gut.

enter image description here

5
sanchothefat

Das Menü kann einfach mit diesem Code generiert werden.

<ul>
                <li <?php if(is_home()) { ?> class="active" <?php } ?>><a href="<?php echo get_option('home'); ?>/">Home</a></li>
                <?php wp_list_pages('depth=1&sort_column=menu_order&title_li=' ); ?>
            </ul>

Die zum Erstellen einer Liste veröffentlichter Seiten verwendete Funktion wp_list_pages () fügt dem Listenelement, das der angezeigten Seite entspricht, automatisch eine Klasse current_page_item hinzu.

Sie müssen lediglich die Klasse .current_page_item zu Ihrer style.css-Datei hinzufügen:

/* Style the list element */
li.current_page_item{
background:#eee;
color:#777;
}

/* Style the link element */
li.current_page_item a{
text-decoration:underline;
}
0
Sufiyan Ghori

Es ist nicht sehr hübsch (und könnte durch dynamisches Aufrufen der Menüelement-ID mit PHP verbessert werden), aber Sie können dies tun:

     <?php if (is_front_page()) echo
       '<style type="text/css" title="text/css">.menu-item-14 a
         {your current_page_item style here}</style>'
    ;?>

Ändern Sie das .menu_item-14 in die Klasse der aktuellen Homepage und das current_menu_item ebenfalls in Ihr CSS.

Platzieren Sie diese Anweisung direkt nach dem

<link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo( 'stylesheet_url' ); ?>" />

in der header.php wird das CSS also nach dem Haupt-Stylesheet geladen.

0
markratledge

Merkwürdigerweise nimmt WordPress diese Seite nicht als aktuelle Seite auf. Eine einfache Lösung ist dies (nur CSS).

In deinem style.css

.home .menu-item-47 {
   /* current-menu-item styles */
}
0
Rob Vermeer