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

WordPress自定义文章类型与分类法同slug重写及URL优化问题

解决Portfolio自定义文章类型URL移除分类路径的问题

嘿,第一次折腾WordPress的Rewrite规则很正常,别担心!我来帮你把URL改成你想要的样子——直接通过site.com/portfolio/post-added-to-portfolio/访问作品集文章。

第一步:确认自定义文章类型的注册配置

首先,你注册portfolio自定义文章类型的时候,要确保rewrite参数设置正确,这样基础的URL结构才对。检查你注册代码里的这部分:

register_post_type( 'portfolio', array(
    // 其他参数...
    'rewrite' => array(
        'slug' => 'portfolio',
        'with_front' => false, // 避免继承主题的前缀(比如/blog/)
        'feeds' => true, // 可选,开启feed
        'pages' => true // 支持分页
    ),
    'has_archive' => true, // 确保归档页site.com/portfolio/正常访问
    'hierarchical' => false, // 作品集文章一般不需要层级
    // 其他参数...
) );

第二步:添加自定义Rewrite规则,匹配不带分类的URL

因为你的文章属于多个分类,WordPress默认会把分类路径加到URL里,我们需要添加一条规则,让系统识别portfolio/文章slug这种格式的请求,并正确对应到对应的portfolio文章。

把下面的代码加到你的主题functions.php文件里,或者自定义插件里:

function custom_portfolio_rewrite_rule() {
    // 添加Rewrite规则:匹配portfolio/任意slug,指向portfolio文章
    add_rewrite_rule(
        '^portfolio/([^/]+)/?$',
        'index.php?post_type=portfolio&name=$matches[1]',
        'top' // 确保这条规则优先级高于默认的分类规则
    );
}
add_action( 'init', 'custom_portfolio_rewrite_rule' );

第三步:刷新WordPress的Rewrite规则

添加完规则后,必须刷新Rewrite规则才能生效:

  • 登录WordPress后台,进入设置 → 固定链接页面
  • 不需要修改任何设置,直接点击「保存更改」按钮即可。这会让WordPress重新生成Rewrite规则,我们刚才添加的规则就会生效了。

第四步:确保模板加载正确

现在访问site.com/portfolio/post-added-to-portfolio/的时候,WordPress应该会自动加载你的single-portfolio.php模板(如果主题里有的话)。如果没有这个模板,会默认使用single.php,你可以根据需要创建或修改对应的模板文件。

注意事项

  • 确保你的portfolio文章的slug是唯一的!如果不同分类下有slug相同的文章,这个规则会优先匹配到最早发布的那一篇,可能导致混淆。所以建议所有portfolio文章用唯一的slug。
  • 如果之前有设置portfolio分类的Rewrite规则,可能需要调整它们的优先级,避免和我们添加的规则冲突。

这样操作之后,你应该就能直接通过site.com/portfolio/文章slug/访问对应的作品集文章了,而不需要带上分类路径~

内容的提问来源于stack exchange,提问作者James

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:22:43