3

How to assign parent page template to its child pages dynamically?

1

Paste following code to your theme's functions.php:

add_action('save_post','changeTemplateOnSave');
function changeTemplateOnSave(){
    global $post;
    $curr_tmp = get_post_meta($post->ID, '_wp_page_template', true);
    $parent_tmp = get_post_meta($post->post_parent, '_wp_page_template', true);
    if($post->post_parent)
        update_post_meta($post->ID,'_wp_page_template',$parent_tmp,$curr_tmp);
}

This will force WordPress to change page template to it's parent template on post save.
Not tested but should work.

| improve this answer | |
  • If the code is working, please mark it as the accepted by clicking on the check box outline to the left of the answer. – Max Yudin Sep 26 '12 at 12:52
1

A little correction to the Max Yudin's solution:

add_action('save_post','changeTemplateOnSave');
function changeTemplateOnSave(){
    global $post;
    $curr_tmp = get_post_meta($post->ID, '_wp_page_template', true);
    if($post->post_parent){
        $parent_tmp = get_post_meta($post->post_parent, '_wp_page_template', true);
        update_post_meta($post->ID,'_wp_page_template',$parent_tmp,$curr_tmp);
    }
}
| improve this answer | |
0

One further little correction if you care about php warnings in the background.

When creating a new post/page the folllow notice was being output

Notice: Trying to get property of non-object error

Fixed this by making sure $post exists or and is not empty.

add_action('save_post','changeTemplateOnSave');

if ( ! function_exists( 'changeTemplateOnSave' ) ) {

    function changeTemplateOnSave() {

        global $post;

        if ($post) {

            $curr_tmp = get_post_meta( $post->ID, '_wp_page_template', true );

            if ( $post->post_parent ) {

                $parent_tmp = get_post_meta( $post->post_parent, '_wp_page_template', true );

                update_post_meta( $post->ID, '_wp_page_template', $parent_tmp, $curr_tmp );
            }
        }
    }
}
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.