自定义发布类型发布具有子`Page`发布类型发布

时间:2016-05-31 作者:setterGetter

奇怪的是,我似乎找不到任何人以这种方式提出这个问题。

是否有可能使页面成为CPT的子页面?以一种可重复的方式(更多信息请参见下文)注意,我并不是说反之亦然——这很容易,请参见:Can a custom post type have a Parent Page?

示例:

我有一个CPTauthor 具有permalink结构:http://example.com/authors/john-doe

  • 我想要一个自定义的感谢帖类型page 居住在http://example.com/authors/john-doe/thank-you page 立柱类型任意下方的立柱author 职位类型职位?

    N、 b.并非所有的作者页面都需要有一个/作者/作者姓名/谢谢有些人什么都不需要,有些人可能需要一个不同的slug,例如/作者/简·多伊/生日快乐

  • 2 个回复
    SO网友:brianjohnhanna

    我真的想不出一种方法,你可以有一个帖子类型的页面,并让它是“可重复的”正如杰克所说,这将涉及重写规则。我认为最简单的方法是为主题目录中的任何情况设置一些模板,并使用查询变量来填充它们。例如:

    function wpse_add_query_vars( $vars ){
        $vars[] = "tmpl";
        $vars[] = "author_slug";
        return $vars;
    }
    add_filter( \'query_vars\', \'wpse_add_query_vars\' );
    
    function wpse_add_rewrite_rule() {
        add_rewrite_rule( \'^authors/([^/]*)/([^/]*)\', \'index.php?author_slug=$matches[1]&tmpl=$matches[2]\', \'top\' );
    }
    add_action( \'init\', \'wpse_add_rewrite_rule\' );
    
    function wpse_template_include( $template ) {
        if ( get_query_var( \'tmpl\' ) && get_query_var( \'author_slug\' ) ) {
            if ( file_exists( get_template_directory() . \'/\' . get_query_var( \'tmpl\' ) . \'.php\' ) ) {
                $template = get_template_directory() . \'/\' . get_query_var( \'tmpl\' ) . \'.php\';
            }
        }
        return $template;
    }
    add_filter( \'template_include\', \'wpse_template_include\' );
    
    我对此进行了测试,效果不错,但可能需要根据您的需要进行调整。基本上,情况如下:

    我们注册了tmpl 查询var,以便指定模板文件slug作为名称。我们必须在主题文件夹中创建所需的模板/authors/author-name/template-name 然后我们可以加载模板(如果存在)确保在添加或更改任何重写规则后刷新设置中的永久链接template_include 看看我们是否有tmpl var集,检查主题目录中是否有模板,如果有,则返回该模板。例如,我们/authors/author-name/thank-you, 我们将寻找thank-you.php 模板文件,并加载该文件,而不是默认模板。您可以使用get_query_var().这只是一个抽象的示例,显然需要根据您的需要进行调整,但使用此方法,您可以根据需要制作尽可能多的这些页面,并从主题开始进行维护。我也没有创建一个author-CPT来全面测试这一点,因此您可能需要调整重写规则,以便它不会与您试图使用author-CPT进行的其他操作发生冲突(事实上,您甚至可能不需要使用author\\u slug query var,因为它可能已经从WP中提供)。

    以下是更多资源:

    1. Custom Page Template Page Based on URL Rewrite
    2. The Rewrite API: Post Types & Taxonomies
    SO网友:Jake Deichmann

    我真的想不出一个简单且可重复的方法来实现这一点,但请查看:https://wordpress.org/support/topic/create-static-subpage-for-a-custom-post-type

    您可以在帖子类型的末尾创建自定义参数。一旦你得到这个,你可以加载一个模板,并使用该参数来查询页面的内容。

    相关推荐