![图片[1]-给卡尼奶主题写了个友链插件:一键获取资料、前台申请、后台审核,全闭环](https://id5oma7232fgn4.1yunpan.com/%E7%A3%8A/1789154630924.jpg)
折腾博客的这段时间,友链一直是我最想要又最怕麻烦的东西。想要热闹一点的友链区,又不想整天手动加链接、改代码。前阵子干脆给主题写了个插件,把友链这事整个串起来了:首页展示、前台申请、一键抓资料、后台审核,一条龙。
用了一段时间,稳定下来,分享给同样用卡尼奶主题(knn)的朋友。
为什么写这个插件
我用的卡尼奶主题,首页友链区块和 Links 模板都是直接读 WordPress 原生链接表的。也就是说,只要往链接表里写数据,主题自己就能展示出来。但原生的链接管理没有”申请”入口——想加友链的站长只能私信我,我再手动加,麻烦且慢。
所以需求很明确:
1. 首页展示友链,最好好看一点
2. 对方站长在前台自己填表申请
3. 填完我不需要手动整理资料——自动抓取对方的网站名称、简介、Logo
4. 我在后台点一下通过,友链立刻上首页
功能一览
① 首页友链展示
桌面端一行三个友链卡片,最右侧常驻我的网站资料卡(站点图标、名称、网址、RSS),方便对方回访。手机端自动切成紧凑三列卡片,logo 在上、名称在下,不挤不乱。
② 一键获取网站资料
申请表单里输入网址,点「一键获取」,自动抓取对方网站的:
- 站点名称(优先 og:site_name / og:title,取不到再降级取 title)
- 站点简介(og:description / description)
- 站点 Logo(og:image / favicon)
对方站长只需要填一个网址,剩下的自动补齐,申请门槛瞬间变低。
③ 前台申请 + 后台审核
前台填表提交(名称、地址、类别、邮箱、简介、Logo),后台「友链申请」菜单里看到待审核列表,点「通过」就直接写入 WordPress 链接表——首页立刻显示,不需要清缓存、不需要改任何文件。也可以拒绝或删除,拒绝的话对方那边会看到状态反馈。
④ 后台友链管理
不想等申请?也可以自己在后台直接新增、删除友链,同样是即时上首页。
⑤ 自定义本站资料
后台设置页可以改「本站信息」:名称、链接、图标、描述,显示在申请表单上方,参照 s17.cn 那类友链页的做法——先展示我的站,再让对方填申请,一来一回更有诚意。申请规则、同 IP 申请间隔(默认 10 分钟)也都能配。
使用效果
PC 端大概是这样的感觉:
手机上则是三列紧凑卡片,滚到友链区一眼看全。
## 安装方法
1. 后台 → 插件 → 安装插件 → 上传插件,选择 zip 包上传并启用
2. 后台出现「友链申请」菜单(申请审核 / 友链管理 / 设置)
3. 到「设置」里填好本站信息、申请规则,完事
4. 前台首页友链区自动出现在主题友链区块下方(主题自身区块保留不动,插件区块在它下面)
## 技术上的一些说明(给好奇的站长)
- **零侵入**:主题核心文件是加密的,没法改。所以插件走的是"审核通过 → 写入 WordPress 原生链接表 `wp_links`"这条路,主题的友链区块天然就能读出来,两边不打架。
- **申请记录**存在独立的自定义内容类型里,和正式友链分开,审核通过才落库。
- **一键获取**做了三层兜底:`wp_remote_get` → `file_get_contents` → 原生 socket,碰上服务器禁了某个函数也能抓。
- **防滥用**:抓取有 SSRF 防护(只允许公网地址、每跳重定向都校验)、同 IP 限流、表单 nonce 校验,不是裸奔的。
- 没做国外那种 heavy 依赖,纯 PHP + 原生表,不引入额外表结构(除了申请记录)。
## 下载
插件包(v2.1.0,适配卡尼奶主题):
https://id5oma7232fgn4.1yunpan.com/%E7%A3%8A/%E6%9C%80%E6%96%B0%E5%8F%8B%E9%93%BE%E6%B5%8B%E8%AF%95.zip
## 结尾
这个插件是围绕我自己的卡尼奶主题写的,如果你也是同款主题,直接装就能用;不是的话,如果主题也是读 `wp_links` 的,大概率也能兼容,可以试试。
欢迎交换友链,我的站点在下面,申请入口就在友链区。
---
*本文首发于磊的博客:https://www.sleiy.cn/*

