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

WordPress多CPT固定链接按post_id设置异常:规则误应用所有CPT

解决自定义文章类型固定链接仅针对特定CPT生效的问题

我完全懂你的困扰——本来只想让teams这个自定义文章类型用post ID作为固定链接,结果代码一跑,连players的链接也跟着变了,完全偏离了你的预期。问题出在你之前的代码没有做严格的文章类型判断,导致所有自定义文章类型都触发了这个链接修改规则。

修复后的代码示例

你只需要在钩子回调函数里加一个条件判断,只对teams类型的文章生效:

function set_teams_permalink_to_post_id($post_link, $post) {
    // 仅处理teams类型的自定义文章
    if ($post->post_type !== 'teams') {
        return $post_link; // 其他类型直接返回原有链接
    }
    
    // 返回以post ID为路径的固定链接
    // 如果想保留/teams/前缀,可以改成:home_url('/teams/' . $post->ID . '/')
    return home_url('/' . $post->ID . '/');
}
add_filter('post_type_link', 'set_teams_permalink_to_post_id', 10, 2);

关键注意事项

  • 刷新重写规则:修改代码后,一定要进入WordPress后台的「设置」→「固定链接」页面,不用修改任何选项,直接点击「保存更改」。这一步会让WordPress更新重写规则,确保新的固定链接能正常访问。
  • 可选:保留类型前缀:如果你希望teams的链接看起来更清晰(比如example.com/teams/123/而不是example.com/123/),只需要把返回的链接改成home_url('/teams/' . $post->ID . '/')即可。
  • 避免冲突:如果你的players CPT有自己的自定义链接规则,确保它的回调函数也做了对应的类型判断,防止互相干扰。

这样修改后,只有teams的固定链接会变成post ID格式,players的链接会保持你原本设置的样式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:18:01