如何在WordPress分类页仅显示当前分类文章,隐藏子分类文章?
解决WordPress分类页仅显示当前分类文章的问题
方法一:无需代码,直接修改区块设置(推荐新手)
这是最简单的方案,不用写代码就能搞定:
- 进入后台→外观→站点编辑器,找到并打开你的分类归档模板
- 找到页面中显示文章列表的「查询」区块,点击区块右上角的齿轮图标打开设置面板
- 在右侧「查询」选项里:
- 取消勾选「继承查询」(原设置里的
"inherit":true会让区块继承包含子分类的默认查询) - 选择「当前分类」作为查询分类,同时确保「包含子分类」选项是未勾选状态
- 取消勾选「继承查询」(原设置里的
- 保存模板,刷新分类页即可看到效果
方法二:调整代码适配区块查询
如果方法一无效,或者你更倾向用代码解决,可以替换原来的PHP代码:
function exclude_subcategory_posts_in_query_block( $query ) { if ( is_category() && isset( $query->query_vars['post_type'] ) && $query->query_vars['post_type'] === 'post' ) { $query->set( 'include_children', false ); } } add_action( 'pre_get_posts', 'exclude_subcategory_posts_in_query_block' );
- 继续用Code Snippets插件添加这段代码并启用
- 刷新分类页测试效果
为什么原来的代码没生效?
你最初的代码判断了$query->is_main_query(),但区块编辑器的「查询」块使用的是独立查询,不属于主查询范围,所以条件不触发。修改后的代码去掉了主查询的限制,只要是分类页的文章查询就会生效。
内容的提问来源于stack exchange,提问作者Shen Yang
相关产品推荐
相关产品推荐

