WP Custom Fields:在 WordPress 里集中管理全站复用字段

2025/10/18

做 WordPress 站点时,我经常会遇到一些不属于某篇文章,却需要在很多页面重复使用的内容:客服电话、联系邮箱、公司地址、备案信息、活动文案等。

这些内容如果直接写进页面,修改一次就要逐页检查;如果为了几个字段引入一套复杂模板系统,又显得太重。于是我做了 WP Custom Fields,把这类站点级内容收拢成简单的 Key-Value 字段,在后台维护一次,再按需放到不同页面里。

一、它解决的是什么问题

WP Custom Fields 的定位不是替代 ACF,也不负责搭建复杂字段组、文章元数据或模板渲染。它只专注一件事:管理全站复用的键值数据。

例如,我可以在后台添加一个 Key 为 contact_phone 的字段,值为客服电话。以后无论普通文章、页面还是 Elementor 组件,都读取同一份数据。号码变更时只改后台字段,不需要重新翻找每个页面。

插件启用后会创建独立的 wpcf_fields 数据表,保存字段 Key、字段值、备注、操作人以及创建和更新时间。Key 带唯一索引,后台新增时也会检查格式与重复值,避免同名字段造成歧义。

二、三种前台使用方式

为了适应不同的建站方式,我保留了三条尽量简单的输出路径。

  1. 短代码:在文章、页面或支持短代码的组件中写入 [wpcf_field key="contact_phone"],即可输出对应字段值。
  2. 内容占位符:管理员开启内容过滤器后,可以在正文或文本小部件中写 {{contact_phone}}。这个功能默认关闭,不会在安装后主动改写现有内容。
  3. Elementor 动态标签:如果站点安装了 Elementor,可以在动态标签中选择“自定义字段”,再选取需要的 Key。Elementor 只是软依赖,没有安装时,短代码和后台字段管理仍然可以正常使用。

三种入口最终都会走同一套字段查询和输出逻辑。前台值会进行 HTML 转义;Key 不存在时,默认返回空字符串,也可以在设置中改成错误提示,方便排查页面配置。

三、后台字段管理和 JSON 处理

后台的“字段管理”页面支持新增、行内编辑和删除。字段值既可以是普通文本,也可以是 JSON 数据。

如果输入内容以 {[ 开头,插件会先校验 JSON;格式错误时拒绝保存。合法 JSON 在数据库中以紧凑格式保存,后台列表和编辑框则会自动格式化显示,长内容还可以展开或收起。这样既不会因为排版增加存储内容,又能让后台维护更直观。

日常字段操作要求用户具备 edit_others_posts 权限;内容过滤器、Seed 更新和卸载清理等敏感设置则要求 manage_options。AJAX 新增、更新和删除同时检查用户权限与 nonce。

四、用 Seed JSON 补充默认字段

如果需要在多个站点预置一组基础字段,可以把数据写入插件内的 includes/data/fields-seed.json,再由管理员点击“更新字段数据”。

[
  {
    "field_key": "contact_phone",
    "field_value": "+86 000-0000-0000",
    "remark": "客服电话"
  }
]

同步策略是只新增,不覆盖:数据库中已经存在的 Key 会直接跳过。这样升级插件或重新同步 Seed 时,不会覆盖运营人员已经在后台调整过的线上内容。

五、安全默认与卸载策略

这个插件的几个可选能力都采用了偏保守的默认值:

  1. {{key}} 内容过滤器默认关闭,只有管理员明确开启后才参与正文替换。
  2. 缺失 Key 默认输出空字符串,避免错误信息直接出现在正式页面。
  3. 卸载插件默认保留字段表和设置,防止误操作造成数据丢失;只有提前勾选“卸载时删除数据”,卸载流程才会清理数据。

它没有额外的模板渲染体系,也没有把 SMTP、表单或文章字段组等功能混进来。对只想集中维护少量全站公共信息的站点来说,这种边界更容易理解和维护。

六、安装和基本要求

当前 Release 为 v1.0.0,适用于 WordPress 6.0 及以上版本、PHP 7.4 及以上版本。下载 ZIP 后,可以直接在 WordPress 后台“插件 → 安装插件 → 上传插件”中安装并启用。

启用后进入“字段管理”新增字段,再根据页面编辑方式选择短代码、内容占位符或 Elementor 动态标签即可。插件采用 GPL-2.0-or-later 许可证开放源代码。

七、代码与下载

  1. GitHub 项目:biancaplus/wp-custom-fields
  2. Release 页面:WP Custom Fields v1.0.0
  3. 直接下载:wp-custom-fields-1.0.0.zip

如果这个插件正好解决了你的需求,欢迎在 GitHub 给项目点一个 Star。使用中遇到问题或有改进建议,也欢迎提交 Issue。