起因:老主题CorePress 有,新主题AeroCore没有
最近把站点从老主题 CorePress 换到了新主题 AeroCore(本站现在用的这套),整体体验提升不少,页面更干净、加载也更快。
但换完没多久我就发现一个问题:老主题里那个“防转载模块”没了。
CorePress 的后台 → 功能模块里有一组“防转载模块”设置,我一直开着:
- 开启防转载模块(总开关)
- 超过文本长度禁止复制(含允许的复制字数)
- 复制成功提示内容
- 复制成功自动添加来源网址
这套东西看着不起眼,实际上挺有用。自己辛辛苦苦写的教程,被人一键全选复制、粘到别处连个出处都不留,确实挺烦的。加上来源链接之后,至少能多带一点曝光回来。
换到 AeroCore 以后,我把后台翻了个遍,确认新主题确实没有这个功能。
做成子主题还是插件?
一开始我纠结过实现方式,最后选了插件,原因有两个:
- AeroCore 的设置页是编译好的 Vue 应用,没法往里面插开关;子主题目前也没有后台设置能力,做进去还得从零搭一套设置界面。
- 防转载属于“行为类”功能,跟主题外观没关系,做成插件换主题也能继续用,父主题升级也不会被覆盖。
于是就自己撸了一个:防转载模块。

插件功能
后台安装启用后,在 设置 → 防转载模块 进入配置页:
- 开启防转载模块:总开关,关掉后前台完全不加载脚本,零副作用
- 超过文本长度禁止复制开关 + 允许复制文本长度:默认 10 个字符,用户选中的文字超过这个长度就会被拦截并提示“复制内容太长,禁止复制”
- 复制成功提示内容:复制成功后页面上方弹出的提示文字,可自定义
- 复制成功自动添加来源网址:复制超过设定字数(默认 100,可自行调整)时,自动在剪贴板内容末尾追加本站来源
- 管理员豁免:管理员登录状态下不生效,方便自己调试和搬运内容
效果就是:短内容随便复制,长内容要么被拦截,要么带上来源网址一起走。
安装与使用
- 下载插件压缩包
- 后台 → 插件 → 安装插件 → 上传插件,或者解压后放进
wp-content/plugins/ - 启用插件
- 进入 设置 → 防转载模块,打开总开关,按自己需求配置字数和提示文案,保存
提示:如果你站点装了页面缓存插件或用了 CDN(比如 EdgeOne),改完设置记得清一下静态缓存,否则前台可能还在跑旧脚本。
踩到的小坑
功能逻辑本身不复杂,倒是调试时踩了一个 WordPress 的坑:
wp_localize_script 把 PHP 传给前台 JS 的数值全部转成了字符串,也就是说开关关闭时前台拿到的是 "0",而不是数字 0。JS 里非空字符串 "0" 是真值,于是出现了“后台把开关关了,前台还在拦截复制”的诡异现象。
修法也简单,前台取值时显式转一下:
function flag(name) {
return parseInt(cfg[name], 10) === 1;
}
顺手记一下,省得以后再踩。
写在最后
插件本身很轻量,前台脚本不到 6KB,纯原生 JS 无依赖,不写数据库、不影响页面加载速度。有同样需求的朋友可以拿去用:
如果你也从 CorePress 换到了 AeroCore,欢迎留言聊聊还缺哪些老功能,我可以按需继续移植。
