WordPress heeft prachtige functies en met simpele Conditional Tags kan direct worden gekeken of een value waar is of niet. Als de bezoeker op een pagina is dan is er ook een prachtige current_page_item class gekoppeld aan de list-item. Maar helaas niet met de is_author functie, dat lossen wij op met jQuery. Een WordPress menu heeft vele classes om elementen te stylen, net als de current/actieve pagina:
<ul id="menu-hoofdmenu"> <li class="current_page_item menu-item-01"><a href="/">Home</a></li> <li class="menu-item-02"><a href="/contact">Contact</a></li> </ul>
Standaard wp_list_authors(); functie
Maar met de “is_author” functie komt er ook een prachtig menu te voorschijn. Maar dan vele malen simpeler zonder al die extra classes:
<?php $args = array( 'optioncount' => false, 'exclude_admin' => true, 'hide_empty' => false, ); ?> <?php wp_list_authors( $args ); ?>
Tussen resultaat
<ul id="menu-hoofdmenu"> <li><a href="/admin">Admin</a></li> <li><a href="/jantje">Jantje</a></li> </ul>
Bij deze links komt de bezoeker op een authors/bloggers pagina met informatie over deze auteur. Maar als de bezoeker nu op 1 van deze 2 pagina’s is, dan kan er niet in het menu gezien worden op elke pagina hij/zij is. Dit komt omdat in deze is_author functie geen current_page of current_author class is gekoppeld, alles is blanco. Hoe voegen we deze class nu dan wel toe?
jQuery addClass .current_page_item
Natuurlijk even eerst de latest jQuery library in de sectie van je theme toevoegen. En dan gaan de aan de slag! Eerst kijken we of de huidige pagina een authors pagina is. Vervolgens pakken we de nickname/slug en dit vergelijken we met het list-item menu in de div#authors. Als de huidige author’s naam gelijk is aan een list-item dan voegen we bij dat list-item een .current_page_item class. Nu is het een kwestie van stijlen, simpelere kan het niet!
<script type="text/javascript"> $(document).ready(function(){ <?php if ( is_author()) { $curauth = (get_query_var('author_name')) ? get_user_by('slug', get_query_var('author_name')) : get_userdata(get_query_var('author')); ?> $("#authors li:contains('<?php echo $curauth->nickname; ?>')") .addClass("current_page_item"); <?php } ?> }); </script>
- Leestijd: 3 minuten