如何让WordPress子子分类的Slug URL仅显示最后一级分类名称?
解决WordPress子分类URL仅显示最后一级slug的问题
要实现子子分类URL只显示最后一级分类名称(如https://example.com/subsub/),需要修改WordPress的分类重写规则,同时注意避免slug冲突问题,以下是具体实现方案:
方法一:通过代码自定义重写规则
在主题(推荐用子主题)的functions.php文件中添加以下代码:
// 自定义分类重写规则,仅保留最后一级slug function custom_category_rewrite_rules($rules) { $new_rules = []; // 匹配单slug结构的URL,指向对应分类 $new_rules['([^/]+)/?$'] = 'index.php?category_name=$matches[1]'; // 让新规则优先于默认层级规则生效 return $new_rules + $rules; } add_filter('category_rewrite_rules', 'custom_category_rewrite_rules'); // 主题激活时自动刷新重写规则 function custom_flush_rewrite_rules() { flush_rewrite_rules(); } add_action('after_switch_theme', 'custom_flush_rewrite_rules');
注意事项:
- slug唯一性:所有分类(父分类、各级子分类)的slug必须唯一,否则会出现URL冲突,WordPress无法正确匹配对应分类页面。
- 刷新重写规则:添加代码后,进入WordPress后台「设置」→「固定链接」页面,点击「保存更改」,手动触发重写规则刷新,确保新规则生效。
- 子主题使用:若使用主主题,更新主题会覆盖
functions.php中的自定义代码,因此推荐使用子主题存放这段代码。
方法二:通过插件实现
可以使用支持自定义分类URL结构的WordPress SEO类插件,在插件的分类URL设置选项中,选择「仅显示最后一级分类slug」的模式。使用插件时同样需要确保所有分类slug唯一,避免URL冲突。
内容的提问来源于stack exchange,提问作者jimi-del
相关产品推荐
相关产品推荐

