在自定义帖子类型中创建子页面

时间:2014-01-16 作者:agis

我想有这样的链接,site.com/my-custom-type-slug/single-custom-post-name/stats/, 哪里/stats 应包含/my-custom-type-slug 页面内容,以及当我将内容添加到/stats 页面,应添加在父级内容之后。

这个/stats 例如,对于在我的CPT中创建的每个页面,页面都应该可用/my-custom-type-slug2, /my-custom-type-slug3, 等等/stats.

我认为一个解决方案是创建一个名为stats 并分配一个自定义模板,但问题是如何为我正在创建的每个新帖子创建附加内容?

如果我不需要激活评论,这将很容易,因为我是这样做的:

使用在我的帖子中添加自定义所见即所得字段ACF 插件,然后创建端点:

function wpa121567_rewrite_endpoints(){
    add_rewrite_endpoint( \'stats\', EP_PERMALINK );
}
add_action( \'init\', \'wpa121567_rewrite_endpoints\' );
在此之后,我的URL将如下所示:
site.com/your-custom-type-slug/single-custom-post-name/stats/

然后在我的single-{cpt}.php 模板我可以检查请求是否用于stats, 并包括或输出所需数据:

if( array_key_exists( \'stats\', $wp_query->query_vars ) ){
    // the request is for the comments page
} 
else {
    // the request is for the main post
}
此解决方案不适用于我,因为我无法在上激活评论/stats 因为我正在使用端点来创建它。

总之,我需要的是为父页面和“/stats”页面提供两组独立的注释。对如何实现这一目标有何建议?

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

我建议使用分层自定义帖子类型和条件,以便在single-{cpt}.php. 通过使用分层自定义帖子类型,您可以创建sub-cpt , 就像sub page 作为stats 它是母帖的一部分。

这个sub-cpt 然后可用于存储附加数据(例如,在post\\u内容或custom\\u字段中)以及特定于stats 部分职位。

请注意,您将需要使用pre_get_posts

single-{cpt}.php 应该是这样的

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <?php if( array_key_exists( \'stats\', $wp_query->query_vars ): ?>

        <!-- output the data for the stats part -->
        <?php
            // query sub cpt data
            $args = array(
                \'post_parent\' => $post->ID,
                \'post_type\'   => \'your-cpt\', 
                \'posts_per_page\' => 1,
                \'post_status\' => \'any\'
            );

            $sub_cpt = get_children( $args);

            // query sub cpt comment
            $args = array(
                \'post_id\' => $sub_cpt->ID,
            );

            $child_post_comment = get_comments( $comment_args );
        ?>

    <?php else: ?>

        <!-- output the data as you intended for the non stats part -->
        <?php the_title(); ?>
        <?php the_content(); ?>
        <?php
            // query sub cpt comment
            $args = array(
                \'post_id\' => $post->ID,
            );
        ?>
        <?php get_comments( $args ); ?>

    <?php endif; ?> 
<?php endwhile; ?>
<?php endif; ?>

结束

相关推荐