告别复制粘贴:用 Ad Inserter 实现系列文章自动添加多语言 CTA(踩坑实录)
从手动复制到全自动,我花了半天,踩了三个大坑,分享给你。
一、手工时代的痛点
作为一个写了十几年技术博客的人,我的“自建 VPN”系列有几十篇文章,中英文双语。每篇文章末尾都要加一段推广 VPN 代搭建服务的 CTA。以前的做法是:
- 写完文章 → 打开另一篇旧文章 → 复制 CTA 代码 → 粘贴到新文章 → 保存。
- 英文站再重复一遍。
- 如果 CTA 文案要改一个字,所有文章全部手动编辑。
更别提我还有其他系列(比如 MySQL 性能优化、Linux 运维),以后也要配不同的 CTA。手动复制粘贴,绝对是一场噩梦。
于是我开始寻找自动化方案,最终锁定了 WordPress 插件 Ad Inserter。

(截图1:搜索插件 Ad Inserter)
二、为什么是 Ad Inserter
Ad Inserter 是一个非常老牌的广告/内容插入插件,免费版功能已经足够强大。它支持:
- 按文章、页面、首页、分类、标签、自定义分类法(比如 PublishPress Series 创建的“系列”)插入内容。
- 支持 URL 匹配、设备定向、用户角色等。
- 可以精确控制插入位置(正文前/后、段落之间、评论前后等)。
我的博客正好用了:
- PublishPress Series 来管理文章系列(比如“自建 VPN”系列)。
- Polylang 来实现中英文双语。
Ad Inserter 理论上可以完美配合它们。但实际配置过程中,我踩了三个大坑,下面一个个说。
三、第一次尝试:用分类 ID,完全无效
网上很多教程说,在 Ad Inserter 的 Taxonomies 输入框里填分类 ID 就行。于是我先找到“自建 VPN”系列的 ID(在后台编辑系列的 URL 里看到 tag_ID=35606),然后:
- 打开 Ad Inserter →
Block 1。 - 在
Conditions面板里找到Taxonomies输入框。 - 填入
35606(也试过series:35606)。 - 保存。
结果:访问任意一篇文章(包括完全不相关的 PHP 教程),底部都出现了 CTA。所有文章都有,包括 VPN 系列的文章也有。
这说明 series:35606 这个写法根本没被插件识别,插件把它当成了空条件,于是默认给所有文章都插入了。这与白名单/黑名单无关,就是单纯的无效。
这个坑让我浪费了半小时。
四、关键突破:用别名 + Toggle taxonomy editor
我仔细盯着 Taxonomies 输入框,发现它左边有一个小图标。鼠标悬停提示 Toggle taxonomy editor。我点击它,弹出一个下拉列表,里面列出了我所有已存在的系列(比如 windows-to-ubuntu、self-hosted-vpn 等)。

(截图2:后台,点击 Taxonomies 左侧的筛选框 Toggle taxonomy editor,弹出下拉列表,本质是 Ajax 请求)

(截图3:搜索下拉列表中的“VPN”,搜索结果为空,没有搞明白原因,暂且放弃)
我随意选了一个系列(例如 windows-to-ubuntu),文本框里自动变成了 series:windows-to-ubuntu。
恍然大悟:正确的格式是 series:别名(英文冒号),而不是数字 ID。
于是我在 Taxonomies 里手动输入 series:self-hosted-vpn。
但保存后,我发现 所有文章(除了 VPN 系列)底部都有 CTA,而 VPN 系列的文章反而没有。
这是因为 Taxonomies 框右边的小图标默认是 黑色叉号 ✖ —— 代表 黑名单模式。
黑名单的意思是:除了这个系列,其他所有系列都显示。
所以我等于告诉插件“除了 self-hosted-vpn 这个系列,其他所有文章都加 CTA” —— 正中黑名单逻辑。
我点击那个图标,从 ✖ 切换为 黑色对勾 ✔(白名单模式)。
再保存、刷新前台——只有“自建 VPN”系列的文章底部出现了 CTA,其他文章干干净净。
教训:
- 用
series:别名格式,不要用数字 ID。 - 每个条件框左边的小图标决定了白名单/黑名单,务必确认是黑色 ✔。
五、格式乱了?从可视化编辑器复制是陷阱
CTA 终于只出现在正确的文章里了,但排版全乱——没有换行,列表消失,标题和正文挤在一起。

(截图4 页面中 CTA 格式乱掉的效果)
我最初是怎么做的?我在 WordPress 文章编辑器里写好 CTA(可视化模式),然后全选复制,直接粘贴到 Ad Inserter 的 Block 1 编辑框中。在 Ad Inserter 的后台预览看着是正常的,但前台页面就成了一坨文字。
原因:可视化编辑器复制出来的内容带有 WordPress 的 Gutenberg 区块注释(<!-- wp:paragraph --> 等),Ad Inserter 虽然能保留 HTML 标签,但不会解析 Gutenberg 区块,而且有时候会丢失换行符。
解决方法:切换到代码编辑器模式。
具体操作:
- 在 WordPress 文章列表,点击编辑链接。
- 在编辑文章的代码编辑器中,你会看到类似这样的完整代码(CTA 内容):
html
<!-- wp:paragraph -->
<p><strong>拒绝折腾 | 专属 WireGuard VPN 代搭建服务</strong></p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>本频道长期实测各类网络优化方案。<strong>自用线路已连续稳定运行超过 1 个月,全程无掉线记录</strong>。如果你不想反复踩坑、折腾复杂的服务器与协议配置,欢迎联系我获取专属解决方案。</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p><strong>服务内容:</strong><br>✅ <strong>远程代搭建</strong>:在你自己的服务器上部署专属 VPN,数据完全掌控,一劳永逸。<br>✅ <strong>免费试用福利</strong>:新用户可申请<strong>免费试用一个月我的自建节点</strong>,亲自体验极致的稳定性与速度。<br>✅ <strong>效果保证</strong>:深度优化分流规则,彻底解决日常使用中的卡顿与连接超时问题。</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p><strong>联系方式:</strong><br>Telegram:@shuijingwan<br>微信:13980074657<br>邮箱:<a href="mailto:shuijingwanwq@gmail.com">shuijingwanwq@gmail.com</a></p>
<!-- /wp:paragraph -->
- 复制这段代码。
- 回到 Ad Inserter 的 Block 1 编辑器,点击编辑器工具栏上的 Toggle tools –
Toggle Code generator按钮,切换到源代码模式。 - 粘贴代码。
- 保存。

(截图5:后台,Block 1 中使用代码编辑器复制上述代码并保存)

(截图6:保存后格式正常,Insertion 为 After content)
这时前台页面终于正常了——换行、加粗、列表、链接全部正确显示。
经验:永远从代码编辑器复制内容到 Ad Inserter,不要从可视化编辑器直接复制。
六、插入位置:After content vs After post
默认我用的 Insertion 是 After content,CTA 出现在文章正文末尾、评论区之前,“上一篇/下一篇”导航之后。我觉得离导航太近,想往下挪一点。

(截图7:在中文自建 VPN 系列下的所有文章末尾删除掉重复的 CTA 内容后,最终效果,但发现 Block 1 的内容离上一篇与下一篇的距离有一些近了)
我尝试改为 After post——效果符合预期,离导航远了一些。
我调整过多次 Insertion,想让 CTA 放在内容末尾,且在 上一篇的 上面,发现最终很难做到。决定先就这样了。接受现状。如果你有强迫症,可以用短代码手动插入到任意位置,但我觉得够用了。
七、英文系列如法炮制
我的英文“Self-Hosted VPN”系列别名是 self-hosted-vpn-en,系列 ID 是 35608。
创建一个新 Block(Block 2):
Taxonomies输入series:self-hosted-vpn-en。- 左边图标切换为黑色 ✔(白名单)。
Insertion我这次选了After post(为了对比效果,但最终你也可以保持After content)。- 从代码编辑器复制英文版 CTA 代码:
html
<!-- wp:paragraph -->
<p><strong>Stop the Hassle | Custom WireGuard VPN Setup Service</strong></p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>I have been testing various network optimization solutions for a long time. <strong>My personal setup has been running continuously for over a month with absolutely zero downtime.</strong> If you are tired of troubleshooting and dealing with complex server configurations, feel free to reach out for a custom solution.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p><strong>What I Offer:</strong><br>✅ <strong>Remote Setup Service:</strong> I will deploy an exclusive VPN on your own server. You keep full control of your data—set it once and forget about it.<br>✅ <strong>Free Trial:</strong> New users can apply for a <strong>one-month free trial of my self-hosted node</strong>, so you can personally experience the speed and stability.<br>✅ <strong>Performance Guaranteed:</strong> Deeply optimized routing rules to completely eliminate lag and connection timeouts in daily use.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p><strong>Contact Me:</strong><br>Telegram: @shuijingwan<br>WeChat: 13980074657<br>Email: <a href="mailto:shuijingwanwq@gmail.com">shuijingwanwq@gmail.com</a></p>
<!-- /wp:paragraph -->

(截图8:在 Block 2 中粘贴上述代码,Insertion 为 After post,输入 series:self-hosted-vpn-en,且 Block 1 也调整为 After post)
保存,前台英文文章底部正常显示英文 CTA。完美!

(截图9:英文系列下的文章的最终效果,符合预期)
八、清理手动添加的旧代码
最后一步:去“自建 VPN”系列下的每一篇文章(中英文),把之前手动粘贴的 CTA 代码删掉。否则页面会出现两个 CTA(一个手动,一个自动)。
批量处理可以用 Better Search Replace 插件,一次性替换掉所有旧代码。我是手动改的,因为文章不多。
九、总结与建议
如果你也是 WordPress 博主,并且有类似需求:
- 不同系列/分类/标签下自动追加不同内容
- 支持中英文多语言
- 不想每次手动复制粘贴
Ad Inserter + PublishPress Series + Polylang 是一个经过验证的组合。
几个核心要点分享给你:
- 用别名,不要用 ID:
Taxonomies里输入series:别名(英文冒号)。 - 白名单/黑名单:注意文本框左边的小图标,黑色 ✔ 是白名单,黑色 ✖ 是黑名单。
- 格式:从 WordPress 代码编辑器复制内容,粘贴到 Ad Inserter 的源代码模式(
Toggle Code generator),不要从可视化编辑器直接复制。 - 插入位置:
Afterpost 通常最合适。 - 测试:先启用一个 Block,确认无误再配置其他。
现在,我可以安心写技术文章了,CTA 会自动出现在该出现的地方。下一步,我打算为“MySQL 性能优化”系列再配一个不同的 CTA,引导读者联系我进行数据库调优服务。