Mixing some functions from here and here I wrote the code below in my functions.php:
function the_slug($pageID) { // Is there any other way to get the parent page slug?
$post_data = get_post($pageID, ARRAY_A);
$slug = $post_data['post_name'];
return $slug;
}
function child_page_template(){
global $post;
$parent_page_slug = the_slug($post->post_parent);
$page_template = 'page-'. $parent_page_slug . '-child.php'; //name it on your own
$parents = get_post_ancestors($post->ID); // if is child
if($parents){update_post_meta($post->ID,'_wp_page_template',$page_template);}
}
add_action('save_post','child_page_template');
Now, every time a child page is created or updated it will have as page template a file named "page-parentslug-child.php.
for example:
'PARENT' => page-slug.php (default)
'parent'> 'CHILD' => page-'PARENTSLUG'-child.php
'parent'> 'child'> 'GRANDCHILD' => page-'CHILDSLUG'-child.php
'parent'> 'child'> 'grandchild' > 'GRAND-GRANDCHILD' => page-'GRANDCHILDSLUG'-child.php (...) and so on.
That it