Z-Blog 与 WordPress 插件机制对比:钩子设计的两种思路
摘要
两个系统都有钩子,但设计哲学的差异会直接影响插件怎么写、以及迁移时有多痛。命名与定位WP 用 add_action / add_filter 两个函数区分“执行动作”和“过滤数据”。Z-Blog 统称 Filter,靠命名约定(带 Core
两个系统都有钩子,但设计哲学的差异会直接影响插件怎么写、以及迁移时有多痛。
命名与定位
WP 用 add_action / add_filter 两个函数区分“执行动作”和“过滤数据”。Z-Blog 统称 Filter,靠命名约定(带 Core_Save、Validate 的是过滤器)来推断。
区别在于:WP 的类型是强制的,用错函数会报错或行为异常;Z-Blog 靠约定,用错了不报错,只是返回值得不到利用。
钩子数量
WP 核心有上千个钩子,几乎每一步都能插手;Z-Blog 的核心钩子数量少一个量级,覆盖主要流程但不细碎。
结果是:WP 插件可以做到很细的局部替换,Z-Blog 插件往往要整块接管某个流程。
配置存储
| 对比项 | WordPress | Z-Blog |
|---|---|---|
| 存储方式 | wp_options 表 | c_option.php 或 Config 对象 |
| 读写 API | get_option/update_option | $zbp->Config()/SaveConfig() |
| 自动加载 | 是,全量缓存 | 按插件分别序列化 |
迁移时的实际痛点
WP 插件逻辑迁到 Z-Blog,最容易出问题的是“依赖细分钩子做的事”。比如想在文章保存前校验某个字段,WP 有 wp_insert_post_data 可以只改数据不落库;Z-Blog 只能在 Filter_Plugin_Post_Core_Save 里改,那时对象已经准备好要写入了,校验失败要自己抛异常或置空标题来阻止。
反过来,Z-Blog 的 $zbp->LoadLanguage() 这类全局方法在 WP 里没有对应物,习惯后会觉得很方便。
2026年10月20日 14:59
前后30天 · 点日期看归档
9月20日
9月21日
9月22日
9月23日
9月24日
9月25日
9月26日
9月27日
9月28日
9月29日
9月30日
10月1日
10月2日
10月3日
10月4日
10月5日
10月6日
10月7日
10月8日
10月9日
10月10日
10月11日
10月12日
10月13日
10月14日
10月15日
10月16日
10月17日
10月18日
10月19日
10月20日
10月21日
10月22日
10月23日
10月24日
10月25日
10月26日
10月27日
10月28日
10月29日
10月30日
10月31日
11月1日
11月2日
11月3日
11月4日
11月5日
11月6日
11月7日
11月8日
11月9日
11月10日
11月11日
11月12日
11月13日
11月14日
11月15日
11月16日
11月17日
11月18日
11月19日