我为什么离开 WordPress 并构建自定义 CMS

我使用 WordPress 多年,但最终花在维护平台上的时间比管理网站还多。插件依赖、页面构建器臃肿、性能变通方案、兼容性问题以及持续的安全维护,让原本简单的改动变成了反复出现的技术项目。

对于许多网站而言,WordPress 仍然可以是一个实用的选择。但对 AlexanderMirvis.com 来说,与其继续扩展和维护一系列第三方组件,构建一个专门定制的 CMS 变得更有吸引力。

简而言之:我想要一个轻量级的公开网站、一个简洁的管理区域、对架构的直接控制,以及对发布、SEO、媒体、重定向、AI 辅助内容和付费咨询的内置支持。

为什么 WordPress 对我来说成了问题

一个干净的 WordPress 安装可以很轻量。困难始于网站需要 SEO 控制、重定向、表单、安全、缓存、图像优化、支付及其他运营功能时。每项需求都可能引入另一个插件、配置界面、更新周期和潜在的兼容性问题。

最终,内容管理系统可能会变成依赖管理系统。正是在那时,WordPress 开始不再像一种工具,而更像一项反复出现的维护义务。

插件依赖与兼容性

WordPress 插件生态系统既是它最大的优势,也是它最复杂的问题之一。它提供了极其广泛的功能,但也可能让网站依赖由互不相关的开发者维护的软件。

一次 WordPress 更新可能会影响某个插件。一次 PHP 更新可能会暴露另一个兼容性问题。更换主题可能会改变布局。不更新也不是可持续的解决办法,尤其是在涉及安全修复时。

反复出现的问题变成了:这次更新会破坏什么?

页面构建器臃肿

Elementor、WPBakery、Divi、基于 Gutenberg 的构建器以及特定主题的系统等页面构建器,可以让视觉设计更容易。它们也可能为原本可以相对简单的布局生成大量标记、CSS、JavaScript、包装元素、配置数据和数据库内容。

我不希望一个标题、三个段落和一个按钮需要多层构建器特有的输出和配置。

性能变通方案

当 WordPress 网站变慢时,通常的应对方式往往是添加更多软件:缓存、优化、压缩、延迟 JavaScript、合并 CSS、图像处理或 CDN 集成。这些工具可以提供帮助,但当某项优化破坏网站的一部分时,它们也会带来额外的设置和例外情况。

我到了这样一个阶段:需要配置软件来弥补其他软件所带来的性能成本。我希望面向公众的网站从设计上就保持快速和简单。

持续的安全维护

WordPress 使用广泛,因此其安装实例是自动化攻击的常见目标。WordPress 核心、主题、插件、废弃组件、上传处理程序、XML-RPC、管理账户和数据库访问都可能需要关注。

WordPress 可以得到妥善保护,但这项工作不会在初始设置后停止。主题和插件的集合越庞大,需要监控的代码和更新活动就越多。

我改为构建了什么

我为 AlexanderMirvis.com 构建了一个自定义 CMS。它并非旨在支持所有可能的网站类型,而是围绕该网站实际需要的发布和管理功能设计。

该系统管理:

  • 页面和出版内容
  • 分类、子分类、标签和导航
  • 媒体、特色图像和内嵌图像
  • 元数据、结构化数据、站点地图和索引控制
  • 友好 URL 和重定向
  • 用户、权限、修订版本、草稿和定时发布
  • 在受控权限下运行的自定义插件
  • OpenAI 辅助的内容和 SEO 工作流
  • Stripe 支付和付费咨询

因为我掌控整个架构,公开网站可以保持轻量,而管理功能则保留在 CMS 后台。

快速、简单的主页

主页经过有意设计,以保持快速和直观。它不需要页面构建器在每次有人访问时计算多层布局配置。CMS 负责管理内容和后台,而无需让公开主页承载不必要的构建器功能。

受控的可扩展性

插件本身并不是问题。失去对依赖链的控制才是问题。

我的 CMS 会在适当情况下支持自定义插件,但代码库、权限和管理访问都由我控制。插件管理仅限于适当的管理级别。AI 辅助内容工具也与可执行服务器代码分离,因此 OpenAI 无法重写 PHP 文件或修改身份验证系统。

发布与内容管理

页面管理

在 CMS 中,我可以创建草稿、发布或定时发布页面、将内容设为私密、更改标题、编辑友好 URL、上传特色图像、插入内嵌媒体、直接编辑 HTML,并维护修订历史记录。

每个页面也都有自己的 SEO 设置,因此不再需要仅为编辑元数据而安装单独的插件。

带有分类和子分类的出版内容

文章整理在出版内容归档中。CMS 支持分类和子分类,从而可以建立如下清晰结构:

/publications/technology/cybersecurity/article-title/

出版内容支持分类、子分类、标签、摘要、特色图像、发布日期、草稿、私密状态、定时发布、内嵌媒体、修订历史记录以及可编辑的友好 URL。

如果出版内容的 URL 发生变化,CMS 可以通过 301 重定向保留之前的位置。

媒体库

内置媒体系统让我可以上传并重复使用图像、指定特色图像、将媒体插入页面和出版内容,并提供适当的替代文本。

我成功构建了一个图像上传器,而且没有把它变成一堆升级通知和月度订阅。

导航、侧边栏和小工具

导航独立于内容层级进行管理。我可以添加、删除和重新排列菜单项;链接到内部页面或出版内容;以及创建外部链接。CMS 还包含侧边栏和小工具功能,可用于可复用的网站组件。

修订版本、定时发布和发布控制

修订历史记录、定时发布、草稿管理、私密内容、发布日期、分类、子分类、标签和特色图像都属于同一个系统。这些正是我所需的内容管理功能,没有附加与之无关的功能。

内置 SEO 和重定向

我的主要目标之一,是让 SEO 成为 CMS 架构的一部分,而不是日后通过大型插件添加的东西。

每个页面和出版内容都支持:

  • 自定义 SEO 标题和元描述
  • 焦点关键词或关键短语
  • 可编辑的别名和规范 URL
  • index 和 noindex 控制
  • follow 和 nofollow 指令
  • Open Graph 元数据和社交图像
  • 结构化数据
  • 搜索结果预览

CMS 还管理友好 URL、robots.txt、XML 站点地图和重定向。当页面或出版内容移动时,系统可以保留其之前的友好 URL。

CMS 内部的 OpenAI 集成

OpenAI 直接集成到了编辑工作流中。我不需要将文章复制到另一个工具中,再把建议复制回来,然后将相同的信息输入一个单独的 SEO 插件。

页面级 SEO 分析

每个页面和出版内容都可以运行由 OpenAI 驱动的分析,涵盖搜索意图、关键词定位、标题、可读性、内容深度、元数据、结构和其他优化机会。

元数据生成

OpenAI 可以根据页面内容推荐 SEO 标题、元描述、焦点关键词、摘要、标签和友好 URL。

内容改进

系统可以针对标题、各级标题、引言、段落结构、内部组织、关键词定位、元数据、标签、摘要和 URL 提出改进建议。随后可以在 CMS 编辑器中应用建议的更改。

自然语言编辑命令

CMS 还包含一个通用 AI 命令界面。例如,我可以提出以下请求:

针对纽约的网络安全咨询优化这篇文章。改进引言,重写 H2 标题,创建更有力的 SEO 标题和元描述,建议相关标签,并改进 URL。

CMS 已经可以访问页面内容,从而减少了在多个工具之间复制和粘贴的需要。

全站 AI SEO 分析

全站 AI SEO 中心可以审查更广泛的内容清单,而不是每次只分析一个页面。它可以识别薄弱的标题、缺失的描述、重复的元数据、内容单薄、关键词重叠、搜索意图冲突、潜在的关键词蚕食以及其他优化机会。

这有助于找出可能彼此竞争的页面,并识别值得优先关注的内容。

Stripe 与付费咨询

Stripe 直接集成到了 CMS 中。Stripe API 凭据、定价、货币、Webhook 验证和咨询状态都从管理区域进行管理。

我当前的设置可以要求为一次咨询支付 $20。CMS 会在服务器端验证付款,之后才能查看消息。

付费咨询会显示在 CMS 管理系统中。未付款的提交内容会保持锁定,而已完成的 Stripe 付款会经过验证,之后才会解锁咨询内容。

这样就无需为一个工作流组合单独的联系表单、支付、Webhook 和集成插件。

安全与管理

我希望安全性从一开始就被设计进架构,而不是事后通过另一组插件添加。

CMS 包括:

  • 预处理数据库语句
  • CSRF 防护
  • 安全的密码哈希
  • 受控会话
  • 经过 MIME 验证的上传
  • 阻止上传可执行文件
  • 受保护的配置文件
  • 基于环境的密钥
  • 安全响应头
  • Stripe Webhook 签名验证
  • 将 AI 内容权限与可执行服务器代码分离

OpenAI 可以协助处理内容、元数据、SEO 和结构化 CMS 操作。它不能在凌晨 3:00 突然决定 config.php 需要一次创意重写。

响应式管理界面

管理界面基于 Bootstrap,并可响应式适配台式机、笔记本电脑、平板电脑和移动设备。我希望它感觉像一个专注的应用程序,而不是一个被插件通知和升级提示占据的仪表板。

WordPress 仍然有用吗?

是的。WordPress 依然有用、受到广泛支持,并且对许多企业而言是合理的选择。它可以快速上线网站,许多开发者都熟悉它,而且几乎每一种常见需求都有可用的插件。

但对我来说,维护其周边生态系统最终比构建我所需的功能更令人沮丧。我想要速度、架构控制、简洁的 URL、结构化出版内容、媒体管理、内置 SEO、重定向、Stripe、受控插件以及直接的 OpenAI 集成。

AlexanderMirvis.com 现在运行在一个围绕这些需求设计的 CMS 上,不再有 WordPress 插件轮盘赌、页面构建器开销,也不再反复安装软件来弥补其他软件的问题。

没错,它确实很快。当一个网站不必走到哪里都拖着相当于搬家卡车的数字负担时,它自然可以运行得很快。