对主题中的父页和子页使用相同的页面模板

时间:2018-07-11 作者:Sonali

我正在制作一个模板,可以在父页面和子页面上使用。

假设我有一个:

template name: TEST

我需要在父页面和子页面上使用该模板:

Parent page name -> test1 -> template name:TEST

Child page name -> test2 -> Parent page test1 -> template name: TEST

1 个回复
SO网友:Shibi

您可以使用save_post 执行此操作。

我认为每次页面加载都检查比其他选项更好,因为它不会影响客户端,也不会每次页面加载都运行。

此外,您需要检查其是否是已保存的post parent,以便更新其孩子。

检查此项:

function set_child_page_template( $post_id, $post, $update ) {
    // Check for post type page
    if( $post->post_type === \'page\' ) {
        // Check if its a child page
        if( $post->post_parent !== 0 ) {
            // If its child get the post parent template
            $parent_template = get_post_meta( $post->post_parent, \'_wp_page_template\', true );
            update_post_meta( $post_id, \'_wp_page_template\', $parent_template );
        } else {
            // If its parent update all his childs
            $parent_template = get_post_meta( $post_id, \'_wp_page_template\', true );
            $children = get_pages( [\'child_of\'=>$post_id] );
            foreach( $children as $child ) {
                update_post_meta( $child->ID, \'_wp_page_template\', $parent_template );
            }
        }
    }

}
add_action(\'save_post\', \'set_child_page_template\', 10, 3);

结束

相关推荐

Custom templates vs page-slug

我目前一直在使用slug来设置页面模板,使用普通的层次结构例如,如果我想更改的页面模板http://www.example.com/about-us, 我会编辑关于我们的页面。php如果客户端要去更改页面slug,它将不再加载正确的模板。在WordPress后端使用“自定义模板”下拉列表是否更好?就这一点而言,最佳做法是什么?非常感谢