WP All Import导入西里尔文内容时%postname%固定链接被截断报错如何解决
WP All Import西里尔文长标题固定链接截断、重复报错解决方案
问题原因
WP All Import的默认slug(固定链接后缀)生成逻辑独立于WordPress原生规则,对西里尔文等非拉丁字符的长度统计按字节计算而非字符数,因此会出现比原生规则短得多的截断问题,长标题截断后内容重复就会触发「重复记录」报错。手动创建文章时调用的是WordPress原生slug生成逻辑,所以不会出现截断。
可行解决方案
方案1:添加钩子调用原生slug生成逻辑(最推荐)
在当前主题的functions.php文件,或代码片段管理插件中插入如下代码,强制导入时使用WordPress原生规则生成slug:
add_filter('pmxi_save_post', 'custom_pmxi_use_native_slug', 10, 3); function custom_pmxi_use_native_slug($postData, $import, $postToUpdate) { if (empty($postData['post_name']) && !empty($postData['post_title'])) { // 调用原生函数生成slug,自动处理转码、截断、重复加后缀逻辑 $postData['post_name'] = wp_unique_post_slug( sanitize_title($postData['post_title']), $postToUpdate ? $postToUpdate->ID : 0, $postData['post_status'], $postData['post_type'], $postData['post_parent'] ); } return $postData; }
该方案和手动创建文章的slug生成规则完全一致,不会出现截断,也会自动为重复slug添加数字后缀,从根源避免重复报错。
方案2:导入时手动指定slug字段
- 在WP All Import导入配置的「标题与内容」步骤,找到*固定链接(slug)*配置项
- 直接绑定导入源中提前准备好的完整slug字段,也可以绑定原西里尔文标题字段,由插件直接转换为slug
- 勾选「允许WP All Import为重复slug添加数字后缀」选项,避免重复冲突
方案3:调整插件内置截断长度(旧版本兼容)
如果使用的是4.x及以下旧版本WP All Import,可直接调整插件的默认截断长度:
- 进入对应导入任务的设置页面,按下F12打开浏览器开发者控制台
- 输入命令
PMXI_Plugin::$instance->options['slug_length'] = 200;回车执行,将截断长度调整为和WordPress原生一致的200字符
错误操作避坑
WordPress官方明确规定guid字段仅用作feed唯一标识,不是站点固定链接,修改guid会导致订阅、站点地图、历史版本关联等多个功能异常,不要使用修改guid的方式调整固定链接。
验证步骤
配置完成后先进行小批量测试导入,确认长标题文章的slug无截断、无重复报错后,再执行全量导入即可。
内容的提问来源于stack exchange,提问作者LFJ
相关产品推荐
相关产品推荐

