Aufgabenstellung: Wordpress als CMS. Hauptseiten stehen in Topnavigation. Die Unterseiten sollen in der Sidebar ausgegeben werden, wobei jeweils nur die Unterseiten der aktuellen Seite sichtbar sein sollen. Unterseiten der nächsten Ebene sollen erst nach Klick auf selbige angezeigt werden.
Lösung:
PHP
<?php
global $wp_query;
if($post->post_type == 'page')$current=$post->ID;
if(empty($wp_query->post->post_parent) ){
$parent = $wp_query->post->ID;
$oberste_seite=$parent;
}
else {
$parent = $wp_query->post->post_parent;
$oberste_seite=end(get_post_ancestors($post));
}
//seitentiefe ermitteln
$parent_id=$parent;
$object = $wp_query->get_queried_object();
$parent_id = $object->post_parent;
$depth = 1;
while ($parent_id > 0) {
$page = get_page($parent_id);
$parent_id = $page->post_parent;
$depth++;
}
$ausgabe=wp_list_pages("$echo=0&title_li=&child_of=$oberste_seite&depth=$depth");
echo '<ul>'.$ausgabe.'</ul>';
?>
Alles anzeigen
basiert auf drei anderen snippets, danke den vorarbeitern!
das script zeigt alle punkte der aktuellen unterebene an. bsp: auf link 1 klicken, unterpunkte link1 und unterpunkte link2 werden angezeigt. die anderen sollte man mittels css ausblenden...oder hat da jemand noch eine bessere idee?
Code CSS Beispiel:
HTML
ul#subnav ul ul {
display:none;
}
ul#subnav .current_page_item ul, ul#subnav .current_page_parent ul, ul#subnav .current_page_ancestor ul{
display:block;
}
gruss