如何让WordPress CPT内容正常显示在分类、标签归档页
问题根因
WordPress 分类(category)、标签(post_tag)的原生归档主查询默认仅拉取默认文章类型post的内容。你注册app_video时配置的taxonomies参数,仅实现了CPT编辑页可选择分类、打标签的绑定能力,不会自动修改前台归档页的查询规则,这是CPT内容无法在归档页显示的核心原因。
解决步骤
1. 通过官方钩子修改归档主查询
将以下代码添加到当前主题的functions.php文件,或者自定义功能插件中即可,该方案直接修改主查询逻辑,不会破坏分页规则,性能最优:
add_action( 'pre_get_posts', function( $query ) { // 跳过后台查询,仅对前台主查询生效 if ( is_admin() || ! $query->is_main_query() ) { return; } // 匹配分类归档、标签归档场景 if ( $query->is_category() || $query->is_tag() ) { // 配置需要在归档页展示的文章类型 $query->set( 'post_type', array( 'post', 'app_video' ) ); } } );
如果后续有其他共享分类法的自定义文章类型需要加入归档,直接往post_type对应的数组中追加对应CPT的slug即可。
2. 刷新重写规则
代码添加完成后,登录WordPress后台进入「设置」→「固定链接」页面,不需要修改任何现有配置,直接点击页面底部的「保存更改」按钮,刷新系统的URL重写规则,避免出现归档页404、内容加载异常的问题。
避坑提示
不要通过在归档模板中新建自定义WP_Query替换主循环的方式实现需求,该方法会破坏原生分页逻辑,还会产生额外的数据库查询开销,性能远低于修改主查询的方案。
内容的提问来源于stack exchange,提问作者scri66le
相关产品推荐
相关产品推荐

