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

WordPress自定义文章类型分类访问问题:无法调用archive-destinos.php

解决WordPress分类“Países”跳转至自定义文章类型Destinos归档模板的问题

作为WordPress新手,遇到这种分类和自定义文章类型(CPT)的联动问题很正常,我来一步步帮你搞定:

步骤1:修改分类页面查询,只展示Destinos内容

默认分类页面会显示所有文章类型(包括默认的post)的内容,我们需要用pre_get_posts钩子限定查询结果仅包含你的Destinos自定义文章类型。

把下面的代码添加到你主题的functions.php文件里(建议用子主题修改,避免主题更新丢失代码):

function filter_paises_category_query( $query ) {
    // 仅针对前台主查询,且当前是"Países"分类页面
    if ( ! is_admin() && $query->is_main_query() && is_category( 'paises' ) ) {
        // 设置查询只返回Destinos类型的内容
        $query->set( 'post_type', 'destinos' );
    }
}
add_action( 'pre_get_posts', 'filter_paises_category_query' );

这段代码的作用是:当用户访问/category/paises页面时,自动把查询结果替换成Destinos类型下属于该分类的内容。

步骤2:让分类页面复用archive-destinos.php模板

现在查询内容已经正确,但页面还是会用默认的分类模板(比如category.php)。如果想直接复用archive-destinos.php的布局和样式,继续在functions.php里添加这段代码:

function use_destinos_archive_for_paises_category( $template ) {
    // 检查当前是否是"Países"分类页面
    if ( is_category( 'paises' ) ) {
        // 查找主题中的archive-destinos.php模板
        $destinos_template = locate_template( 'archive-destinos.php' );
        // 找到模板就替换当前使用的模板
        if ( $destinos_template ) {
            return $destinos_template;
        }
    }
    // 其他情况返回默认模板
    return $template;
}
add_filter( 'template_include', 'use_destinos_archive_for_paises_category' );

备选方案:复制模板并重命名(更直观)

如果你不想写代码,也可以直接复制主题里的archive-destinos.php文件,把副本改名为category-paises.php,然后放到主题根目录下。WordPress会自动识别这个模板是专门给Países分类使用的,无需额外配置。

验证效果

完成操作后刷新/category/paises页面,就能看到和/destinos页面完全一致的布局,且只展示Destinos类型下属于该分类的内容了。


内容的提问来源于stack exchange,提问作者Yeiser Pérez Mirabal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:23:03