1NT3RN3T

Professionelle amatørhjemmesider

Søg

Tilpas menuer i WordPress med wp_nav_menu

Menusystemet på Herlev Gymnasium og HFs hjemmeside var tidligere et plugin, jeg havde skrevet før WordPress kom med deres menusystem i form af wp_nav_menu. Jeg tænkte at det var på tide at skifte til WordPress’ eget system fordi det både er hurtigere og langt nemmere at tilpasse end mit eget.

Mit eget menusystem havde dog en masse finetunet tilpasning, som ikke umiddelbart var nemt at få med over i menusystemet i WordPress. Fx skulle alle indlæg fremstå i menuen som om den aktive side er Nyheder og alle billedgallerier (som åbner på deres egen side), skulle se ud som om siden Billedgalleri var den aktive side.

Løsningen blev at jeg tilføjede denne kode til min functions.php fil i temaet.

add_filter('nav_menu_css_class' , 'special_nav_class' , 10 , 2);
function special_nav_class($classes, $item){
global $post;

//Sørger for at alle billedgallerier har Billedgalleriet som aktiv side i menuen
if( $post->post_parent == "2" && ($item->object_id == "2" || $item->title == "Skolens liv") ){
array_push($classes, 'current-menu-item');
}

//Sørger for at alle nyhederne har Nyheder som aktiv side i menuen
if( $post->post_type == "post" && ($item->object_id == "151" || $item->title == "Skolens liv") ){
array_push($classes, 'current-menu-item');
}

//Sørger for at alle de øverste menupunkter får class top
if($item->post_parent == "0"){
array_push($classes, 'top');
}

//Sørger for at markere det øverste menu-valg
if(get_the_title($post->post_parent) == $item->title){
array_push($classes, 'current-menu-item');
}

return $classes;

}

Filter bliver gennemløbet for alle menupunkter i menuen. Så er det bare at tjekke egenskaberne for den side som brugeren er på (ved hjælp at $post) og holde det op mod menupunktets egenskaber (ved hjælp af $item). En meget elegant løsning, når jeg selv skal sige det :)

  1. Www.google.de siger:

    Thank you a lot for sharing this with all of us you actually recognise what you are speaking about!
    Bookmarked. Kindly additionally seek advice from my site =).
    We can have a hyperlink exchange agreement among us

Skriv et svar

Din e-mailadresse vil ikke blive offentliggjort. Krævede felter er markeret med *