WP Manifestindependent plugin directory
manifest / security / external-link

外链跳转插件 releases

一款功能完善、可视化定制的 WordPress 外链安全跳转插件。

by 木木 · github.com/jacky088/external-link · website

0stars
5release downloads
0forks

Install

The author publishes release zips, so WP-CLI can install straight from GitHub:

wp plugin install https://github.com/jacky088/external-link/releases/download/v1.2.2/External-Link-1.2.2.zip

Readme

External Link — WordPress 外链跳转插件

Stars Forks Release Issues License

一款功能完善、可视化定制的 WordPress 外链安全跳转插件
自动拦截文章/评论/圈子中的外链,强制经过可控的提示页跳转;
内置 8 套精美提示页样式两种加密验证机制子比 / 7b2 主题深度适配


目录


核心特性

  • 自动拦截外链the_contentget_comment_author_linkcomment_text 过滤器全方位接管,文章/评论外链统一改写为跳转 URL。
  • 前端实时换链(防 CDN 缓存过期):点击外链时通过 AJAX 实时换取最新跳转 URL,并在新窗口打开拦截提示页,原内容页保持不动。彻底解决启用 CDN / 页面缓存后跳转 Token 过期失效的问题。
  • 全站整页外链接管:基于 output buffer 在线接管整页 HTML,网址导航、导航菜单(wp_nav_menu)、侧栏/页脚、图片广告、WebStack _sites_link 等所有不经 the_content 的外链统一拦截,任意主题通用。
  • 白名单系统:兼容域名后缀、完整 URL 两种形式,每行一个;纯域名会匹配其子域名,完整 URL 按路径边界匹配。
  • 8 套精美提示页样式:默认(茉莉小栈)毛玻璃 / 哔哩哔哩 / 腾讯云社区 / CSDN / 知乎 / 通用跳转(紫蓝渐变) / 墨星博客 / TikTok 海外版。后台可视化预览,一键切换。
  • 两种加密验证机制
    • 随机字符串 Token + 过期机制(默认 5 分钟,可自定义 1–1440 分钟)
    • AES-256-GCM 自包含加密 URL(无需数据库,有效期可自定义,默认永久有效),兼容旧 g1 / CBC 链接
  • Referer 防护:开启后禁止站外直接访问跳转页(403),支持空 Referer 放行与白名单。
  • 可自定义跳转页 Slug:默认 dinterception,后台修改即自动刷新 Rewrite。
  • Logo 自定义:支持上传自定义 Logo,未设置时优雅回退。
  • 主题深度适配:子比(zibll)主题自动关闭其原生外链重定向并接管相关过滤器;7b2 主题圈子支持自定义 CSS 选择器。
  • AJAX 动态转链:基于 MutationObserver + requestIdleCallback 扫描选择器内新增的链接,配合公开 AJAX 接口(Nginx 缓存友好、内置按 IP 限流)完成转换。
  • 热更新友好:CSS/JS 缓存版本由「插件版本号 + 文件修改时间」双维度生成,热替换/升级插件文件后浏览器自动拉取新资源,无需手动清缓存。
  • 优雅卸载:自动清理 options、transient、Rewrite,无残留。

环境要求

要求
WordPress 6.4 及以上(测试至 7.0)
PHP 7.4 及以上
固定链接 需启用(默认 /%postname%/ 即可)
主题 任意,子比(zibll) / 7b2 主题有额外适配
浏览器 支持 ES6 / requestIdleCallback 的现代浏览器

安装

方式一:WordPress 后台上传

  1. 进入 插件 → 安装插件 → 上传插件
  2. 选择 external-link.zip(或从 Releases 下载)
  3. 安装并启用插件
  4. 进入 设置 → 固定链接,点击一次「保存更改」以刷新 Rewrite 规则

方式二:手动上传

  1. 将整个 external-link 目录上传至 wp-content/plugins/
  2. 在「插件」列表启用 外链跳转插件
  3. 同样建议刷新一次固定链接

方式三:从 GitHub 拉取开发版

cd wp-content/plugins/
git clone https://github.com/Jacky088/External-Link.git external-link

使用方法

  1. 后台左侧菜单点击 「外链跳转插件」 进入设置面板。
  2. 基本设置 中确认总开关已启用,按需修改跳转页路径(Slug)。
  3. 白名单设置 中按行填入信任的链接或域名。
  4. 样式设置 中选择喜欢的提示页样式(下方有预览)。
  5. 安全设置 中选择验证方式:随机 Token(推荐)或 AES 加密。
  6. 保存设置后立即生效,无需手动刷新。

后台设置一览

分区 设置项 类型 默认值 说明
基本设置 启用插件功能 switcher 关闭后所有拦截与样式停用
跳转页路径(Slug) text dinterception 仅允许小写字母/数字/短横线,保存即自动 flush rewrite
白名单设置 白名单链接 textarea 每行一个,纯域名兼容子域名,完整 URL 按路径边界匹配
样式设置 提示页面样式 image_select external-link-default 8 套可视化选择
主题社区功能 选择社区功能类型 radio none none / circle(7b2) / forums(子比)
圈子内容选择器 text .topic-content 仅 circle 类型显示
社区帖子选择器 text .forum-article 仅 forums 类型显示
Logo 设置 Logo 图片 upload 上传自定义 Logo
安全设置 链接验证方式 radio random_string random_string / aes_encryption
过期时间(分钟) number 5 1–1440,仅 random_string 类型显示
AES 加密密钥 text 自动随机 32 位 hex 仅 aes_encryption 类型显示
AES Token 有效期(分钟) number 0 0=永不过期,最大 43200(30 天),仅 aes_encryption 类型显示
启用 Referer 防护 switcher 开启后禁止站外直接访问跳转页
允许空 Referer switcher 仅 Referer 防护开启时显示
Referer 白名单 textarea 每行一个域名/URL,仅 Referer 防护开启时显示
换链接口拒绝空 Referer switcher 开启后实时换链接口拒绝无 Referer 请求,防止脚本批量滥用

提示页样式

标识 中文名 风格
external-link-default 默认样式(茉莉小栈) 粉胶囊按钮 + 紫粉渐变背景 + 毛玻璃卡片
external-link-bilibili 哔哩哔哩 浅灰底 + 白卡 + 角落装饰
external-link-tencent 腾讯云社区 极简白卡 + 蓝色「继续访问」按钮
external-link-csdn CSDN 浅灰底 + 米黄图标 + 橙色描边按钮
external-link-zhihu 知乎 灰白底 + 蓝色实心按钮 + 长 URL 区域
external-link-jump 通用跳转 紫蓝渐变 + 圆形警示图标 + slideIn 动画
external-link-moxing 墨星博客 整张背景图 + 双色渐变胶囊按钮
external-link-tiktok TikTok 海外版 + 387×48 描边按钮 + mobile safe-area

后台切换后立即生效,所选样式通过 dmy_link_style 选项持久化。


安全机制

随机字符串 Token(默认)

  • 形态:<token>[A-Za-z0-9]{16}_<timestamp> 组成
  • 存储:通过 set_transient('dmy_link_<key>', $url, $expiration*60) 写入 options
  • 有效期:默认 5 分钟,可后台自定义 1–1440 分钟
  • 过期后访问触发 404 提示页 + 返回首页按钮

AES-256-GCM 自包含加密

  • 形态:g2. 前缀 + base64url(随机 IV(12B) + 认证标签(16B) + 密文),明文为「过期时间戳|URL」
  • 存储:无需数据库,密文完全自包含(不写入任何 transient / options,避免表膨胀)
  • 有效期:后台可自定义,0 = 永不过期(默认),最大 43200 分钟(30 天);过期后访问触发 404 提示页
  • 兼容性:旧版 g1. Token(无过期信息)与更早的 AES-CBC 链接均可继续解密跳转
  • 兜底机制:AES 失效/缺密钥时自动回退到随机字符串方式

Referer 防护

  • 默认关闭,开启后访问跳转页若 Referer 非本站且不在白名单,直接 403
  • 支持「允许空 Referer」与自定义白名单,兼顾 SEO 与安全

接口限流与防滥用

  • 实时换链接口按 IP 限流:默认 120 次/分钟,可通过 external_link_rate_limit 过滤器调整(设为 0 关闭)
  • Referer 非本站的请求直接 403;另提供「换链接口拒绝空 Referer」开关(默认关闭,兼容严格 Referrer-Policy 的站点)
  • 跳转逻辑排除后台 / AJAX / REST 请求,后台 URL 携带 ?a= 参数不会误触发跳转

主题适配

子比(zibll) / 子比比子主题

  • ✅ 自动 _spz('go_link_s', false) / _spz('go_link_nonce_s', false) 强制关闭主题原生外链跳转
  • remove_filter 接管 the_contentcomment_textget_comment_author_link
  • remove_action 接管用户详情模态框 AJAX(个人网站字段走插件转链)
  • ✅ 后台面板在子比环境下使用 light 主题色,更协调

7b2 主题

  • 圈子功能(circle):通过 CSS 选择器(默认 .topic-content,可后台自定义)扫描动态加载的外链
  • ✅ 基于 MutationObserver + requestIdleCallback 异步处理,不阻塞首屏渲染
  • ✅ 防重复处理:已标记(data-external-link)或已预取(dataset.externalLinkPrefetched)的链接自动跳过

全站整页接管(所有主题通用)

从 v1.2.0 起,插件不再局限于 the_content 与特定主题,而是对整页前台 HTML 进行 output buffer 统一接管

  • ✅ 适用于任意主题:网址导航、导航菜单(wp_nav_menu)、侧栏、页脚、图片广告等所有不经 the_content 输出的外链都被拦截
  • 不修改原始 href / 字段:仅向指向外链的 <a> 追加 data-external-link 标记,保留原 href(利于 SEO)
  • ✅ favicon 接口抓取、二维码拼接、缩略图判断、_sites_link 自定义字段(WebStack)等其它用途完全不受影响
  • ✅ 前台所有页面统一接管;后台编辑、REST/AJAX 接口、跳转页本身不受影响
  • ✅ 站内链接、白名单链接、锚点、mailto:javascript: 等直接放行

目录结构

external-link/
├── external-link.php          # 插件主入口
├── external-link-template.php # 跳转页模板调度器
├── README.md
├── .gitignore
├── assets/
│   └── img/                   # 样式预览与提示页素材
├── js/
│   └── external-link-live.js    # 前端实时换链(防缓存过期)
├── css/
│   ├── external-link.css               # 基础样式
│   ├── external-link-default.css
│   ├── external-link-bilibili.css
│   ├── external-link-tencent.css
│   ├── external-link-csdn.css
│   ├── external-link-zhihu.css
│   ├── external-link-jump.css
│   ├── external-link-moxing.css
│   └── external-link-tiktok.css
├── templates/
│   ├── header.php
│   ├── default-style.php
│   ├── bilibili-style.php
│   ├── tencent-style.php
│   ├── csdn-style.php
│   ├── zhihu-style.php
│   ├── jump-style.php
│   ├── moxing-style.php
│   └── tiktok-style.php
└── codestar-framework/        # 第三方配置面板框架(vendor)
    └── admin-settings/
        └── external-link-settings.php

更新日志

v1.2.2

  • 优化:优化资源缓存方式,支持热更新。

v1.2.1(安全加固)

  • 加固:实时换链接口新增按 IP 限流(默认 120 次/分钟)。
  • 新增:安全设置中可选「换链接口拒绝空 Referer」(默认关闭)。
  • 新增:AES 模式 Token 支持设置有效期。
  • 加固:后台 / AJAX / REST 请求不再处理跳转逻辑。
  • 加固:跳转页样式标识清洗。
  • 加固:整页外链接管跳过 `

Read the full README on GitHub →

Releases

TagPublishedAssetDownloads
v1.2.2 Sep 5, 2026 External-Link-1.2.2.zip 1
v1.2.0 Aug 28, 2026 External-Link-1.2.0.zip 2
v1.1.1 Aug 17, 2026 External-Link-1.1.1.zip 2
v1.1.0 Aug 12, 2026 external-link-1.1.0.zip 0