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

WordPress自定义文章类型resource固定链接带/blog/的问题排查

解决WordPress自定义文章类型Resource仍带/blog/前缀的问题

咱们来一步步排查并解决你的resource自定义文章类型始终带有/blog/前缀的问题——毕竟其他CPT都正常,说明问题大概率出在resource的注册流程或者重写规则的生效环节上。

1. 调整旧Resource类型的删除时机

你当前在init钩子优先级5时执行unregister_post_type( 'resource' ),但如果原来的resource是在优先级5之后(比如常见的优先级10)才被注册的,那这时候执行删除根本找不到这个CPT,等于白删。后续原来的resource依然会被注册,并且可能带着默认的with_front => true参数,哪怕你后来在优先级99重新注册了自己的版本,也可能因为重写规则的缓存导致旧规则残留。

修复代码:
调整删除操作的钩子优先级,确保它在原来的resource注册之后执行,比如改成20:

add_action('init','delete_post_type', 20);
function delete_post_type(){
 unregister_post_type( 'resource' );
}

2. 正确刷新重写规则

你注释掉了flush_rewrite_rules();,而且即使打开,在init钩子上每次调用也会严重影响性能。推荐两种安全的刷新方式:

  • 主题激活时自动刷新:在主题的functions.php中添加以下代码(仅在主题激活时执行一次):
add_action( 'after_switch_theme', 'flush_my_rewrite_rules' );
function flush_my_rewrite_rules() {
 flush_rewrite_rules();
}
  • 手动后台刷新:登录WordPress后台,进入设置 → 固定链接,无需修改任何设置,直接点击「保存更改」按钮——这会强制WordPress更新重写规则,比代码调用更稳妥。

3. 排查Slug冲突问题

如果你的站点里存在页面、分类或其他自定义文章类型的slug为resources(和你给resource设置的归档slug一致),会导致重写规则冲突,WordPress可能优先使用页面/分类的规则,从而让resource的URL异常。

检查步骤:

  • 查看后台「页面」列表,确认是否有标题为Resources的页面,其slug是否为resources;
  • 查看后台「分类」列表,确认是否有slug为resources的分类;
  • 如果发现冲突,修改resource的slug参数(比如改成resource-collection),重新注册后刷新规则即可。

4. 验证Resource注册参数的正确性

再核对一下你的resource注册调用:

custom_register_post_type( 'Resource', 'Resources', 'resource', 'resources', true, array( 'title', 'editor', 'thumbnail' ), true, array( 'category' ) );

这里传递的$slug为resources,最终生成的rewrite参数是array('slug' => 'resources' , 'with_front' => false),这个配置是完全正确的——只要前面的删除和刷新步骤都落实到位,这个参数就能正常生效。

完成以上调整后,再次测试resource文章的URL,应该就不会带有/blog/前缀了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:12:05