Come aggiungere lo stato attivo ai link di navigazione?
Sto cercando di aggiungere gli stati attivi per il mio menu di navigazione personalizzato, ma finora tutto quello che provo non funziona. Ho impostato il menu di navigazione in un file separato nav.php, poi ho incluso nav.php nel mio file header.php in questo modo:
<?php include('nav.php'); ?>
Ho creato pagine personalizzate di Wordpress nella cartella child e incluso header.php subito dopo il nome del template:
<?php /* Template Name: Pagina di Design del Sito*/
?>
<?php get_header(); ?>
Ecco il mio codice html e php attuale in nav.php e ho aggiunto un attributo id univoco "currentpage" per indicare quale voce di menu riflette la pagina corrente dell'utente:
<ul id="menu" class="clearfix">
<li<?php if ($thisPage=="About")
echo " id=\"currentpage\""; ?> class="parent-item"><a href="/about" title="Pagina di benvenuto" class="parent-link menu-item-2" id="main-menu-item-4">About</a></li>
<li<?php if ($thisPage=="Portfolio")
echo " id=\"currentpage\""; ?> class="parent-item"><a href="/portfolio" class="parent-link menu-item-3">Portfolio</a></li>
<li<?php if ($thisPage=="Services")
echo " id=\"currentpage\""; ?> class="parent-item"><a href="/services" class="parent-link menu-item-4">Servizi</a></li>
<li<?php if ($thisPage=="Prices")
echo " id=\"currentpage\""; ?> class="parent-item"><a href="/prices" class="parent-link menu-item-5">Prezzi</a></li>
</ul>
E questo è il mio CSS per gli stati hover e attivo:
ul#menu li a:hover {
background-color: #999999;
color: #fff;
}
ul#menu li #currentpage a {
background: #fff;
color: #333;
}
Per ogni pagina ho assegnato il valore dopo il nome del template, ecco la mia Home page:
<?php /* Template Name: Pagina di Design del Sito
*/
?>
<?php $thisPage="Home"; ?>
<?php get_header(); ?>
Spero che qualcuno possa aiutarmi, davvero non capisco perché questo codice o qualsiasi altro codice php che provo non riesca a far funzionare questi menu personalizzati.

Ciao Dan, è un menu personalizzato con l'id #menu, ma ora l'ho cambiato in wp_nav_menu e ho anche modificato il css. Dovrei eliminare anche questo codice php da tutti gli li con elenco puntato: <?php if ($thisPage=="About") echo " id=\"currentpage\""; ?>

Perché non usi semplicemente la funzione wp_nav_menu()
invece di creare manualmente il tuo menu?

Ciao Dan, hai ragione riguardo all'uso della funzione wp_nav_menu(), piuttosto che affrontare la complicazione di crearne uno manualmente. Quindi ho ripristinato la navigazione di WordPress e ora ho questo: <div id="access" role="navigation"> <?php wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary' ) ); ?> </div> ora l'unico problema è quando devo stilizzare i menu, prima di tutto non riesco a far fluttuare i menu a destra.

Quello che farei è rimuovere tutto quel codice che hai in nav.php che mostra il menu, creare il menu all'interno del backend di WordPress, così potrai usare .current-menu-item
nel tuo css.
Poi tutto ciò che ti servirà per richiamare il menu sarà wp_nav_menu();
Ecco la documentazione per questa funzione:

Nel tuo file PHP, imposta $thisPage
prima di includere include('nav.php');
. In questo modo, la variabile $thisPage
verrà passata a nav.php
e processata nel suo statement if
.
Tuttavia, questa è una pratica davvero sconsigliata, e un modo migliore per farlo sarebbe creare il tuo menu direttamente in WordPress e integrarlo nel tuo template. WordPress documenta come farlo in modo chiaro.

Ho eliminato il file nav.php dal mio header.php, e ho reinserito il vecchio codice del menu che viene fornito con WordPress. Ho fatto alcuni hook nel mio file style.css per adattare gli stili al design desiderato e ho utilizzato solo #menu-navmenu che ho creato in WordPress per allineare a destra la mia barra del menu.
ul#menu-navmenu{float: right;}
Prima avevo questo ul#menu {float: right; margin: 15px;}
e ora ho aggiunto un margine di 15px a questo codice nel template style.css di WordPress:
#access .menu-header ul,
div.menu ul {
list-style: none;
/*margin: 0;*/margin: 15px;
}
Tutto funziona come previsto e grazie per tutto l'aiuto in questa questione, questa è una grande community WordPress.
