WordPress自定义文章类型预览链接缺斜杠触发404错误问题求助
解决方案
1. 补充自定义文章类型的rewrite配置
你在注册自定义文章类型时未显式声明rewrite参数,无头场景下WP Engine Headless插件生成预览链接时会跳过部分原生链接格式化逻辑,导致CPT slug和文章slug拼接时缺失斜杠。你需要在注册CPT的$args数组中补充如下配置(原有其他配置保持不变):
$args = array( // 你原有的其他配置项保留,新增下方rewrite配置 'rewrite' => array( 'slug' => 'standard-forms', // 和你现有的固定链接前缀保持一致即可 'with_front' => false, ), );
2. 修正重写规则刷新逻辑
删除注册函数末尾的flush_rewrite_rules(),这个方法每次页面加载都会执行,会导致重写规则缓存异常。修改完代码后进入WordPress后台「设置」-「固定链接」,直接点击「保存更改」(无需修改任何配置项),手动刷新一次重写规则即可。
3. 检查无头插件预览配置
进入WP Engine Headless插件设置页,找到自定义文章类型的预览模板配置,确保路径格式为[前端域名]/[CPT slug]/[文章slug]/,各路径段之间用斜杠分隔。
4. 强制修正链接格式(兜底方案)
如果以上配置修改后问题仍存在,可以通过pre_post_link过滤器强制修正链接格式,将如下代码添加到主题functions.php或者你的自定义功能插件中:
add_filter( 'pre_post_link', function ( $permalink, $post ) { // 仅对你注册的standardtmp文章类型生效 if ( $post->post_type !== 'standardtmp' ) { return $permalink; } // 补全CPT slug和文章slug之间的斜杠,同时移除多余的连续斜杠 return preg_replace( '#(standardtmp)([^/])#', '$1/$2', $permalink ); }, 10, 2 );
内容的提问来源于stack exchange,提问作者Salvatore
相关产品推荐
相关产品推荐

