You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress ACF:将指定模板页面用作CPT归档页面

解决Case Studies CPT归档页加载home.php的问题

嘿,我来帮你搞定这个棘手的模板层级冲突!你想用同名页面作为Case Studies的归档页,但因为设置了has_archive => false,导致请求归档路径时加载了home.php(你的新闻页面模板)。这里有几个靠谱的解决方案,你可以根据自己的需求选:

方法一:给Case Studies页面创建自定义模板(最推荐)

这个方法最直接,完全不需要修改CPT的注册设置,还能让你100%控制页面的ACF布局和CPT内容展示:

  1. 在你的主题文件夹里新建一个模板文件,命名为page-case-studies.php
  2. 在文件开头添加模板标识,让WordPress识别这是自定义页面模板:
<?php
/*
Template Name: Case Studies Archive
*/
?>
  1. 接下来,在模板里先渲染你用ACF创建的主页面区域和侧边栏灵活布局,再添加CPT的查询代码。示例代码大概是这样的:
<?php
/*
Template Name: Case Studies Archive
*/
get_header();

// 渲染主页面区域的ACF灵活布局(替换成你实际的字段名)
if( have_rows('main_content') ):
    while( have_rows('main_content') ): the_row();
        // 根据你定义的布局类型渲染内容,比如Hero模块、文本模块等
        if( get_row_layout() === 'hero_section' ):
            // 在这里输出Hero模块的HTML和字段内容
            echo '<h1>' . get_sub_field('hero_title') . '</h1>';
        endif;
        // 其他布局模块同理处理
    endwhile;
endif;

// 查询所有Case Studies CPT内容
$case_studies_args = array(
    'post_type'      => 'case-studies',
    'posts_per_page' => 10, // 按需调整每页显示数量
    'orderby'        => 'date',
    'order'          => 'DESC'
);
$case_studies_query = new WP_Query( $case_studies_args );

// 输出CPT列表
if( $case_studies_query->have_posts() ):
    echo '<div class="case-studies-list">';
    while( $case_studies_query->have_posts() ): $case_studies_query->the_post();
        // 用模板片段渲染单个案例研究(或者直接输出内容)
        get_template_part( 'template-parts/content', 'case-study' );
    endwhile;
    // 分页导航
    the_posts_navigation( array(
        'total' => $case_studies_query->max_num_pages
    ) );
    echo '</div>';
    // 重置查询,避免影响后续内容
    wp_reset_postdata();
endif;

// 渲染侧边栏区域的ACF灵活布局
if( have_rows('sidebar_content') ):
    while( have_rows('sidebar_content') ): the_row();
        // 渲染侧边栏对应的模块
        if( get_row_layout() === 'sidebar_widget' ):
            echo '<div class="sidebar-widget">' . get_sub_field('widget_content') . '</div>';
        endif;
    endwhile;
endif;

get_footer();
  1. 回到WordPress后台,编辑你的Case Studies页面,在右侧“页面属性”里选择刚才创建的Case Studies Archive模板,更新页面。

现在访问你的Case Studies页面(或归档路径yoursite.com/case-studies/),就会加载这个自定义模板,既显示你的ACF布局,又列出所有Case Studies内容,而且不会再调用home.php了。

方法二:用过滤器强制归档请求加载页面模板

如果你不想单独写模板,也可以通过template_include过滤器,让Case Studies的归档请求直接加载你的page-case-studies.php:

在主题的functions.php里添加这段代码:

function override_case_studies_archive_template( $template ) {
    // 检查当前请求是否是Case Studies的归档页
    if ( is_post_type_archive( 'case-studies' ) ) {
        // 尝试找到page-case-studies.php模板
        $custom_template = locate_template( array( 'page-case-studies.php' ) );
        if ( $custom_template ) {
            return $custom_template;
        }
    }
    return $template;
}
add_filter( 'template_include', 'override_case_studies_archive_template' );

这样当用户访问归档路径时,WordPress会优先加载你的页面模板,而不是home.php。你只需要确保page-case-studies.php里有查询CPT内容的代码就行。

方法三:开启归档并自定义归档模板

如果你愿意修改CPT的注册设置,可以把'has_archive' => false改成'has_archive' => true,然后创建专门的归档模板:

  1. 修改CPT注册代码,启用归档:
register_post_type( 'case-studies', array(
    // 其他设置...
    'has_archive' => true,
    // 其他设置...
) );
  1. 在主题文件夹里新建archive-case-studies.php模板文件,在里面调用Case Studies页面的ACF字段并渲染归档内容:
<?php
get_header();

// 获取Case Studies页面的ID(根据slug获取)
$case_studies_page_id = get_page_by_path( 'case-studies' )->ID;

// 渲染页面的ACF主区域布局
if( have_rows('main_content', $case_studies_page_id) ):
    while( have_rows('main_content', $case_studies_page_id) ): the_row();
        // 渲染对应模块
    endwhile;
endif;

// 默认的归档查询(自动针对case-studies CPT)
if( have_posts() ):
    echo '<div class="case-studies-archive">';
    while( have_posts() ): the_post();
        get_template_part( 'template-parts/content', 'case-study' );
    endwhile;
    the_posts_navigation();
    echo '</div>';
endif;

// 渲染页面的ACF侧边栏布局
if( have_rows('sidebar_content', $case_studies_page_id) ):
    while( have_rows('sidebar_content', $case_studies_page_id) ): the_row();
        // 渲染对应模块
    endwhile;
endif;

get_footer();

这个方法的好处是利用WordPress原生的归档机制,不需要手动写WP_Query,但需要修改CPT的设置。


内容的提问来源于stack exchange,提问作者M. Ferguson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:31:30