将相同的页面模板动态分配给子页面作为父页面

时间:2012-09-26 作者:Krishnendu

如何将父页面模板动态分配给其子页面?

3 个回复
SO网友:Max Yudin

将以下代码粘贴到主题的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);
}
这将迫使WordPress在保存后将页面模板更改为其父模板
未测试,但应能正常工作。

SO网友:Reza Mamun

对Max Yudin的解决方案稍加修正:

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);
    }
}

SO网友:Jared

如果您关心后台的php警告,还有一个小的修正。

创建新帖子/页面时,会输出follow通知

Notice: Trying to get property of non-object error

通过确保$post存在或不为空,修复了此问题。

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 );
            }
        }
    }
}

结束

相关推荐