CMS 的钩子机制越来越好用,但新人反而更难入门了
这两天翻了几个 CMS 的插件文档,从 WordPress 的 add_action 到 Z-Blog 的 Add_Filter_Plugin,钩子设计确实比十年前成熟太多。可我心里有点别的感受:越好用,新人越懵。 以前的插件是「抄一份改」
以下是带有「钩子」标签的全部文章
这两天翻了几个 CMS 的插件文档,从 WordPress 的 add_action 到 Z-Blog 的 Add_Filter_Plugin,钩子设计确实比十年前成熟太多。可我心里有点别的感受:越好用,新人越懵。 以前的插件是「抄一份改」
写 Z-Blog 插件绕不开两类钩子:Filter 和 Include。名字看着像,用途却完全不同,混用会出问题。Filter:改数据Filter 钩子的作用是拦截并修改数据。挂上之后拿到一个值,返回修改后的值,系统继续往下走。典型如 Fi
两者共用 add_filter 底层,差别只在返回值去向:do_action 丢弃、apply_filters 传递,外加优先级、参数个数与移除钩子的坑。
主循环操作的是全局 $wp_query 和 $post,子查询里的 the_post() 会把 $post 换掉,走完不还原就污染后面所有输出。本文对照三种写法、query_posts 为什么不该用、pre_get_posts 的两个必备判断,以及两个 reset 函数的区别。
WordPress 决定加载哪个文件是固定顺序:解析 URL → 条件标签判断页面类型 → 生成一串候选文件名 → 取第一个真实存在的。本文列出文章、页面、分类、标签、搜索、404 六类页面的完整候选链,指出三处最容易搞错的顺序(front-page.php 会让 home.ph…
给插件加后台配置页,不用自己建表:Z-Blog 自带 $zbp->Config('插件ID') 一个插件一个命名空间,读两行写两行,但 SaveConfig 一次都不能漏,Config 从未创建时读出来是 null 而非空串,必须带默认值兜底。文中给出 main.php 最小骨架…
上一篇结尾我说要把那三处代码收成插件。真动手时,第一版我是直接粘进主题的 include.php 里的。第二天换样式试效果,主题文件一覆盖,目录、相关文章、面包屑全没了。代码还在,只是不在插件里,主题一动它就跟着走。 所以这篇不讲新钩子。把
钩子拿到的参数是引用还是副本,决定了改了算不算数。本文按 Article_Content、ViewList_Core、Post_Get 三个钩子列出各自能拿到什么,配三段可直接用的实战代码:文章页按分类取相关文章、正文自动生成目录、列表页取分类父子路径。最后记三个坑:漏写 & 改…
前台四类页面的钩子位置汇总:Index、List、Article、Search 前缀相同语义一致——Begin 插顶部、End 插底部、Core 改数据层、Content 改正文本身。附三个实测坑:Begin 触发时 head 已输出、漏写 & 引用改了无效、Article_Co…
Z-Blog 钩子本质是注册回调的数组,没有优先级参数,要调顺序只能动插件加载顺序。本文按 plugin.xml → RegisterPlugin → Add_Filter_Plugin → 触发执行四步拆开链路,并按场景列出常挂的钩子,附页头注入与后台加菜单两段可直接抄的代码,…