Network 里同一个 chat-sdk.js 请求了两次,用户发一句「你好」,客服后台收到两条内容一样、message_id 不同的消息。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,主题 footer 里手写了一行 script,插件又用 enqueue 注册了一次,两个来源都输出到页面。SDK 初始化时没有做单例判断,第二次把全局实例覆盖掉,事件监听也跟着绑了两遍。

「客服 SDK 重复加载」这类改动最怕改一半,回滚脚本先准备好,再动生产。报错里带路径的,先去看那个路径在不在、权限对不对。

if (!wp_script_is('cs-sdk', 'enqueued')) {
  wp_enqueue_script('cs-sdk', $url, array(), '2.4.1', true);
}

同一份配置存在多处的,先确认改的是被加载的那一份。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。

备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。

具体做法是,全局搜 chat-sdk 的文件名,把所有输出点列出来,只留一处;统一走 wp_enqueue_script,并先判断是否已经注册;初始化前加一个 window 上的守卫,重复调用直接返回。

最后用这个标准收尾,Network 里只剩一条 SDK 请求,发一条消息后台只出现一条。

作者 9823189