自动化 – 永夜 https://www.shuijingwanwq.com 没有不值得去解决的问题,也没有不值得去学习的技术! Sun, 07 Jun 2026 09:08:23 +0000 zh-Hans hourly 1 https://wordpress.org/?v=7.0 告别复制粘贴:用 Ad Inserter 实现系列文章自动添加多语言 CTA(踩坑实录) https://www.shuijingwanwq.com/2026/06/07/16015/ https://www.shuijingwanwq.com/2026/06/07/16015/#respond Sun, 07 Jun 2026 08:40:21 +0000 https://www.shuijingwanwq.com/?p=16015 浏览量: 7

从手动复制到全自动,我花了半天,踩了三个大坑,分享给你。

一、手工时代的痛点

作为一个写了十几年技术博客的人,我的“自建 VPN”系列有几十篇文章,中英文双语。每篇文章末尾都要加一段推广 VPN 代搭建服务的 CTA。以前的做法是:

  • 写完文章 → 打开另一篇旧文章 → 复制 CTA 代码 → 粘贴到新文章 → 保存。
  • 英文站再重复一遍。
  • 如果 CTA 文案要改一个字,所有文章全部手动编辑。

更别提我还有其他系列(比如 MySQL 性能优化、Linux 运维),以后也要配不同的 CTA。手动复制粘贴,绝对是一场噩梦

于是我开始寻找自动化方案,最终锁定了 WordPress 插件 Ad Inserter

(截图1:搜索插件 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),然后:

  1. 打开 Ad Inserter → Block 1
  2. 在 Conditions 面板里找到 Taxonomies 输入框。
  3. 填入 35606(也试过 series:35606)。
  4. 保存。

结果:访问任意一篇文章(包括完全不相关的 PHP 教程),底部都出现了 CTA。所有文章都有,包括 VPN 系列的文章也有
这说明 series:35606 这个写法根本没被插件识别,插件把它当成了空条件,于是默认给所有文章都插入了。这与白名单/黑名单无关,就是单纯的无效。

这个坑让我浪费了半小时。

四、关键突破:用别名 + Toggle taxonomy editor

我仔细盯着 Taxonomies 输入框,发现它左边有一个小图标。鼠标悬停提示 Toggle taxonomy editor。我点击它,弹出一个下拉列表,里面列出了我所有已存在的系列(比如 windows-to-ubuntuself-hosted-vpn 等)。

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

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

(截图3:搜索下拉列表中的“VPN”,搜索结果为空,没有搞明白原因,暂且放弃)

(截图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,其他文章干干净净。

教训

  1. 用 series:别名 格式,不要用数字 ID。
  2. 每个条件框左边的小图标决定了白名单/黑名单,务必确认是黑色 ✔。

五、格式乱了?从可视化编辑器复制是陷阱

CTA 终于只出现在正确的文章里了,但排版全乱——没有换行,列表消失,标题和正文挤在一起。

(截图4 页面中 CTA 格式乱掉的效果)

(截图4 页面中 CTA 格式乱掉的效果)

我最初是怎么做的?我在 WordPress 文章编辑器里写好 CTA(可视化模式),然后全选复制,直接粘贴到 Ad Inserter 的 Block 1 编辑框中。在 Ad Inserter 的后台预览看着是正常的,但前台页面就成了一坨文字。

原因:可视化编辑器复制出来的内容带有 WordPress 的 Gutenberg 区块注释(<!-- wp:paragraph --> 等),Ad Inserter 虽然能保留 HTML 标签,但不会解析 Gutenberg 区块,而且有时候会丢失换行符。

解决方法:切换到代码编辑器模式。

具体操作:

  1. 在 WordPress 文章列表,点击编辑链接。
  2. 在编辑文章的代码编辑器中,你会看到类似这样的完整代码(CTA 内容):

html

&lt;!-- wp:paragraph -->
&lt;p>&lt;strong>拒绝折腾 | 专属 WireGuard VPN 代搭建服务&lt;/strong>&lt;/p>
&lt;!-- /wp:paragraph -->

&lt;!-- wp:paragraph -->
&lt;p>本频道长期实测各类网络优化方案。&lt;strong>自用线路已连续稳定运行超过 1 个月,全程无掉线记录&lt;/strong>。如果你不想反复踩坑、折腾复杂的服务器与协议配置,欢迎联系我获取专属解决方案。&lt;/p>
&lt;!-- /wp:paragraph -->

&lt;!-- wp:paragraph -->
&lt;p>&lt;strong>服务内容:&lt;/strong>&lt;br>✅ &lt;strong>远程代搭建&lt;/strong>:在你自己的服务器上部署专属 VPN,数据完全掌控,一劳永逸。&lt;br>✅ &lt;strong>免费试用福利&lt;/strong>:新用户可申请&lt;strong>免费试用一个月我的自建节点&lt;/strong>,亲自体验极致的稳定性与速度。&lt;br>✅ &lt;strong>效果保证&lt;/strong>:深度优化分流规则,彻底解决日常使用中的卡顿与连接超时问题。&lt;/p>
&lt;!-- /wp:paragraph -->

&lt;!-- wp:paragraph -->
&lt;p>&lt;strong>联系方式:&lt;/strong>&lt;br>Telegram:@shuijingwan&lt;br>微信:13980074657&lt;br>邮箱:&lt;a href="mailto:shuijingwanwq@gmail.com">shuijingwanwq@gmail.com&lt;/a>&lt;/p>
&lt;!-- /wp:paragraph -->
  1. 复制这段代码。
  2. 回到 Ad Inserter 的 Block 1 编辑器,点击编辑器工具栏上的 Toggle tools – Toggle Code generator 按钮,切换到源代码模式
  3. 粘贴代码。
  4. 保存。
(截图5:后台,Block 1 中使用代码编辑器复制上述代码并保存)

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


(截图6:保存后格式正常,Insertion 为 After content)

这时前台页面终于正常了——换行、加粗、列表、链接全部正确显示。

经验:永远从代码编辑器复制内容到 Ad Inserter,不要从可视化编辑器直接复制。

六、插入位置:After content vs After post

默认我用的 Insertion 是 After content,CTA 出现在文章正文末尾、评论区之前,“上一篇/下一篇”导航之后。我觉得离导航太近,想往下挪一点。

(截图7:在中文自建 VPN 系列下的所有文章末尾删除掉重复的 CTA 内容后,最终效果,但发现 Block 1 的内容离上一篇与下一篇的距离有一些近了)

(截图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

&lt;!-- wp:paragraph -->
&lt;p>&lt;strong>Stop the Hassle | Custom WireGuard VPN Setup Service&lt;/strong>&lt;/p>
&lt;!-- /wp:paragraph -->

&lt;!-- wp:paragraph -->
&lt;p>I have been testing various network optimization solutions for a long time. &lt;strong>My personal setup has been running continuously for over a month with absolutely zero downtime.&lt;/strong> If you are tired of troubleshooting and dealing with complex server configurations, feel free to reach out for a custom solution.&lt;/p>
&lt;!-- /wp:paragraph -->

&lt;!-- wp:paragraph -->
&lt;p>&lt;strong>What I Offer:&lt;/strong>&lt;br>✅ &lt;strong>Remote Setup Service:&lt;/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.&lt;br>✅ &lt;strong>Free Trial:&lt;/strong> New users can apply for a &lt;strong>one-month free trial of my self-hosted node&lt;/strong>, so you can personally experience the speed and stability.&lt;br>✅ &lt;strong>Performance Guaranteed:&lt;/strong> Deeply optimized routing rules to completely eliminate lag and connection timeouts in daily use.&lt;/p>
&lt;!-- /wp:paragraph -->

&lt;!-- wp:paragraph -->
&lt;p>&lt;strong>Contact Me:&lt;/strong>&lt;br>Telegram: @shuijingwan&lt;br>WeChat: 13980074657&lt;br>Email: &lt;a href="mailto:shuijingwanwq@gmail.com">shuijingwanwq@gmail.com&lt;/a>&lt;/p>
&lt;!-- /wp:paragraph -->
(截图8:在 Block 2 中粘贴上述代码,Insertion 为 After post,输入 series:self-hosted-vpn-en,且 Block 1 也调整为 After post)

(截图8:在 Block 2 中粘贴上述代码,Insertion 为 After post,输入 series:self-hosted-vpn-en,且 Block 1 也调整为 After post)

保存,前台英文文章底部正常显示英文 CTA。完美!

(截图9:英文系列下的文章的最终效果,符合预期)

(截图9:英文系列下的文章的最终效果,符合预期)

八、清理手动添加的旧代码

最后一步:去“自建 VPN”系列下的每一篇文章(中英文),把之前手动粘贴的 CTA 代码删掉。否则页面会出现两个 CTA(一个手动,一个自动)。

批量处理可以用 Better Search Replace 插件,一次性替换掉所有旧代码。我是手动改的,因为文章不多。

九、总结与建议

如果你也是 WordPress 博主,并且有类似需求:

  • 不同系列/分类/标签下自动追加不同内容
  • 支持中英文多语言
  • 不想每次手动复制粘贴

Ad Inserter + PublishPress Series + Polylang 是一个经过验证的组合。

几个核心要点分享给你:

  1. 用别名,不要用 IDTaxonomies 里输入 series:别名(英文冒号)。
  2. 白名单/黑名单:注意文本框左边的小图标,黑色 ✔ 是白名单,黑色 ✖ 是黑名单。
  3. 格式:从 WordPress 代码编辑器复制内容,粘贴到 Ad Inserter 的源代码模式(Toggle Code generator),不要从可视化编辑器直接复制。
  4. 插入位置After post 通常最合适。
  5. 测试:先启用一个 Block,确认无误再配置其他。

现在,我可以安心写技术文章了,CTA 会自动出现在该出现的地方。下一步,我打算为“MySQL 性能优化”系列再配一个不同的 CTA,引导读者联系我进行数据库调优服务。

]]>
https://www.shuijingwanwq.com/2026/06/07/16015/feed/ 0