You need to work out what page level you are on first, so that you know the correct ID to pass to the child_of
argument of wp_list_pages
. Give this a try:
global $post;
$page_level = 0;
$post_parent = null;
// Work out what page level we're on
if($post->post_parent > 0) {
$post_parent = get_post($post->post_parent);
$page_level = ($post_parent->post_parent == 0 ? 1 : 2);
}
// Updated with page IDs
echo 'Current page: '.$post->ID.'<br />';
echo 'Current parent: '.$post->post_parent.'<br />';
echo 'Current level'.$page_level.'<br />';
echo 'Loading pages from '.($page_level == 2 ? $post->post_parent : $post->ID).'<br />';
$subpages = wp_list_pages(array(
'echo' =>0,
'title_li' =>'',
'depth' =>1,
'child_of' => ($page_level == 2 ? $post->post_parent : $post->ID)
));
if ( !empty($subpages) ) {
?>
<div class="services-sub-menu">
<?php
if ( $post->post_parent != 0 ) {
echo '<p class="parent-link"><a href="'. get_permalink($post->post_parent) .'"><em>'. __('Back to') .' '. get_the_title($post->post_parent) .'</em></a><p>';
}
echo '<ul>';
echo $subpages;
echo '</ul>';
?>
</div>
<?php
} else {
}