Also erklären kann ich Dir das jedenfalls schon mal. Bitte Code-.Kennzeichnung benutzen übrigens!
<?php
global $wp_query;
if( empty($wp_query->post->post_parent) ) {
$parent = $wp_query->post->ID;
wp_query ist das Query-Objekt, welches sich um die DB-Abfrage kümmert. Im if-Zweig wird die ID des Posts selber in die parent-Variable gesetzt, falls der aktuelle Beitrag keinen Parent hat.
} else {
$parent = $wp_query->post->post_parent;
}
Wenn der Beitrag doch einen Parent hat, wird dessen ID in die parent-Variable gesetzt.
wp_list_pages("title_li=&child_of=$parent&depth=1" );
?>
wp_list_pages ist die Funktion, welche alle Seiten auflistet. Mehr dazu im Codex: http://codex.wordpress.org/wp_list_pages
mit dem child_of-Argument wird gesagt, dass nur Seiten ausgegeben werden sollen, die Kind der Seite mit der gegebenen ID sind. depth=1 gibt an, dass nur eine Ebene an Seiten ausgegeben wird.
Bist Du also auf Seite A, dann werden alle direkten Unterseiten von A ausgegeben. Bist Du auf Seite A1, dann werden alle Unterseiten von A1 ausgegeben. Das funktioniert soweit mit beliebig vielen Ebenen: Du siehst immer die Kinder der aktuellen Seite.
Was Du anpassen müsstest, ist die eventuelle Ausgabe des Parent-Levels und der Links zu den Parent-Seiten.