自动使用特定模板加载子页面

时间:2016-03-30 作者:Boris Kozarac

我有一个名为“细木工”的页面,当打开一些新页面时,我将其父页面设置为细木工(在“页面属性”下),我想将Wordpress设置为自动使用文件页面细木工子页面。php用于显示它们,而无需手动选择模板。

我的解决方案基于此https://wordpress.stackexchange.com/a/218817/85304 ,

function load_usetemplate(){
    global $post;
    // get top level parent page
    $parent = get_post(reset(array_reverse(get_post_ancestors($post->ID))));

    if($parent->ID === pll__(8)  && !is_page(pll_get_post(8)){
        if ($child_template = locate_template( \'page-joinery-subpages.php\')) 
            return $child_template;
    }
    return $template;
}
add_filter( \'page_template\', \'load_usetemplate\' );

1 个回复
最合适的回答,由SO网友:cybmeta 整理而成

在获取顶级父页面之前,可以检查页面是否有父页面;你也忘了定义$template.

此代码应适用于:

function load_usetemplate( $template ){

    global $post;

    if( $post->post_parent > 0 ) {

      // get top level parent page
      $parent = get_post( reset( array_reverse( get_post_ancestors( $post->ID ) ) ) );

      if( $parent->ID === pll__(8) ){
        if ( $child_template = locate_template( \'page-joinery-subpages.php\') ) 
            return $child_template;
      }

    }

    return $template;
}
add_filter( \'page_template\', \'load_usetemplate\' );

相关推荐

Updating modified templates

我想调整一些。php模板文件在我的WordPress主题中,我知道正确的过程是将相关文件复制到子主题文件夹中并在那里编辑文件,这样我的修改就不会在将来的主题更新中丢失。但这是否意味着我将无法从主题更新中获益,因为我将文件放在了我的子主题文件夹中?这可能不是一件好事,因为主题更新可能添加了一些有用的特性,甚至修复了我最初需要对代码进行调整的问题!这方面的常见解决方案是什么?有人推荐了一款Diff应用程序——这是人们常用的吗?