根据父插件自动设置页面模板

时间:2019-03-02 作者:Sushimaru

我在这个论坛上看到过几个类似的话题,但仍然无法找到解决方案。

我有一只母鼻涕虫叫“en”。我将其模板命名为“page en.php”。每当我创建一个子页面,将“en”作为父页面时,我都想对其应用“page en.php”上的描述。有许多孩子。

我成功的时候www.SITE.com/en/ 但是当有孩子的时候,它就不起作用了(例如。www.SITE.com/en/child), 而是显示来自“page.php”的反射,这是不需要的。

以下是我想要避免的:

*使用翻译插件区分id,因为每个id都有单独的模板很痛苦

这些是“页面”而不是“帖子”。

我们非常感谢您的任何见解。

希罗

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

您可以重写层次结构并通过page_template 滤器

最快的方法是通过ID标识父页:

function wpd_page_template_filter( $template ){
    $page = get_queried_object();
    if( 42 == $page->post_parent ){ // en page has ID of 42
        $template = locate_template( \'page-en.php\' );
    }
    return $template;
}
add_filter( \'page_template\', \'wpd_page_template_filter\' );
或者你也可以通过一个额外的步骤通过slug来识别它:

function wpd_page_template_filter( $template ){
    $page = get_queried_object();
    $parent_slug = get_post_field( \'post_name\', $page->post_parent );
    if( \'en\' == $parent_slug ){
        $template = locate_template( \'page-en.php\' );
    }
    return $template;
}
add_filter( \'page_template\', \'wpd_page_template_filter\' );
如果您的页面是孙子或更低级别的页面,您可以使用get_ancestors 作用

相关推荐