如何让特定分类的归档URL同步添加/blog/前缀?
解决方案
你当前的代码只处理了单篇文章的链接(通过post_link过滤器),分类归档页面的链接需要通过category_link过滤器单独处理。以下是完整的修改方案:
1. 添加分类归档链接修改函数
在你的主题functions.php中添加以下代码,用于修改目标分类的归档URL:
function custom_category_archive_permalink($permalink, $term) { // 替换为你需要修改的分类ID数组 $target_cat_ids = array(23, 34, 64); // 仅处理分类 taxonomy 且属于目标ID的分类 if ($term->taxonomy === 'category' && in_array($term->term_id, $target_cat_ids)) { // 在分类slug前添加/blog/前缀 $permalink = trailingslashit(home_url('/blog/' . $term->slug)); } return $permalink; } add_filter('category_link', 'custom_category_archive_permalink', 10, 2);
2. 优化文章链接函数(可选但更稳妥)
你原来的文章链接函数直接拼接post_name可能存在丢失分类结构的风险,建议修改为基于原链接修改的方式,确保保留分类slug:
function custom_category_permalink($permalink, $post) { $target_cat_ids = array(23, 34, 64); if (has_term($target_cat_ids, 'category', $post)) { $home_url = trailingslashit(home_url()); // 提取原链接的相对路径,在前面添加/blog/ $relative_path = str_replace($home_url, '', $permalink); $permalink = trailingslashit(home_url('/blog/' . $relative_path)); } return $permalink; } add_filter('post_link', 'custom_category_permalink', 10, 2);
3. 刷新固定链接规则
添加代码后,必须进入WordPress后台的设置 → 固定链接页面,直接点击「保存更改」按钮(无需修改任何设置),让WordPress更新permalink规则缓存,否则新的URL可能不会生效。
这样修改后,目标分类的归档页面URL会从website.com/news/变为website.com/blog/news/,同时文章链接保持你需要的格式。
内容的提问来源于stack exchange,提问作者Acephalia
相关产品推荐
相关产品推荐

