Cum să adaugi starea activă la linkurile de navigație?
Încerc să adaug stări active pentru meniul meu personalizat de navigație, dar până acum nimic din ce încerc nu funcționează. Am configurat meniul de navigație într-un fișier separat nav.php, apoi l-am inclus în fișierul header.php astfel:
<?php include('nav.php'); ?>
Am creat pagini personalizate WordPress în directorul child și am inclus header.php imediat după numele template-ului:
<?php /* Template Name: Pagina de Design Website*/
?>
<?php get_header(); ?>
Iată codul meu HTML și PHP actual din nav.php unde am adăugat un atribut id unic "currentpage" pentru a indica care element de meniu reflectă pagina curentă a utilizatorului:
<ul id="menu" class="clearfix">
<li<?php if ($thisPage=="Despre")
echo " id=\"currentpage\""; ?> class="parent-item"><a href="/despre" title="Pagina de bun venit" class="parent-link menu-item-2" id="main-menu-item-4">Despre</a></li>
<li<?php if ($thisPage=="Portofoliu")
echo " id=\"currentpage\""; ?> class="parent-item"><a href="/portofoliu" class="parent-link menu-item-3">Portofoliu</a></li>
<li<?php if ($thisPage=="Servicii")
echo " id=\"currentpage\""; ?> class="parent-item"><a href="/servicii" class="parent-link menu-item-4">Servicii</a></li>
<li<?php if ($thisPage=="Prețuri")
echo " id=\"currentpage\""; ?> class="parent-item"><a href="/preturi" class="parent-link menu-item-5">Prețuri</a></li>
</ul>
Și acesta este CSS-ul meu pentru stările hover și active:
ul#menu li a:hover {
background-color: #999999;
color: #fff;
}
ul#menu li #currentpage a {
background: #fff;
color: #333;
}
Pentru fiecare pagină am atribuit valoarea după numele template-ului, iată pagina mea Principală:
<?php /* Template Name: Pagina de Design Website
*/
?>
<?php $thisPage="Principală"; ?>
<?php get_header(); ?>
Sper că cineva mă va putea ajuta, chiar nu înțeleg de ce acest cod sau orice alt cod PHP pe care îl încerc nu reușesc să fac aceste meniuri personalizate să funcționeze.

Salut Dan, este un meniu personalizat cu id-ul #menu, dar acum l-am schimbat în wp_nav_menu și am făcut și modificări în css. Ar trebui să șterg și acest cod php din toate li-urile cu bullet: <?php if ($thisPage=="About") echo " id=\"currentpage\""; ?>

De ce nu folosești pur și simplu funcția wp_nav_menu()
în loc să creezi manual meniul?

Salut Dan, ai dreptate că e mai bine să folosești funcția wp_nav_menu(), decât să te complici să creezi unul manual. Așa că am readus navigația WordPress și acum am asta: <div id="access" role="navigation"> <?php wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary' ) ); ?> </div> singura problemă acum este când încerc să stilizez meniurile, în primul rând nu reușesc să fac ca meniurile să plutească la dreapta.

Ceea ce aș face este să elimin tot codul pe care îl ai în nav.php care afișează meniul, să creez meniul în backend-ul Wordpress, apoi vei putea folosi .current-menu-item
în css-ul tău.
Apoi tot ce trebuie să faci pentru a apela meniul va fi wp_nav_menu();
Iată documentația pentru această funcție:

În fișierul tău PHP, setează variabila $thisPage
înainte de a include fișierul include('nav.php');
. Apoi, variabila $thisPage
va fi transmisă către nav.php
și procesată în instrucțiunea sa if
.
Aceasta este cu adevărat o practică proastă, iar o metodă mai bună de a face acest lucru ar fi crearea meniului direct în WordPress și conectarea lui în șablonul tău. WordPress documentează cum să faci asta într-un mod corect.

Am șters fișierul nav.php din header.php, și am adăugat înapoi codul vechi de meniu care vine cu WordPress. Am făcut câteva modificări în fișierul style.css pentru a ajusta stilurile conform designului dorit și am folosit doar #menu-navmenu pe care l-am creat în WordPress pentru a alinia meniul la dreapta.
ul#menu-navmenu{float: right;}
Înainte aveam acest cod ul#menu {float: right; margin: 15px;}
iar acum am adăugat marginile de 15px în acest cod din fișierul style.css al șablonului WordPress:
#access .menu-header ul,
div.menu ul {
list-style: none;
/*margin: 0;*/margin: 15px;
}
Totul funcționează conform așteptărilor și vă mulțumesc pentru ajutorul oferit în această problemă, aceasta este o comunitate WordPress minunată.
