Z-Blog 插件开发:Filter 钩子与 Include 钩子的实际分工
摘要
写 Z-Blog 插件绕不开两类钩子:Filter 和 Include。名字看着像,用途却完全不同,混用会出问题。Filter:改数据Filter 钩子的作用是拦截并修改数据。挂上之后拿到一个值,返回修改后的值,系统继续往下走。典型如 Fi
写 Z-Blog 插件绕不开两类钩子:Filter 和 Include。名字看着像,用途却完全不同,混用会出问题。
Filter:改数据
Filter 钩子的作用是拦截并修改数据。挂上之后拿到一个值,返回修改后的值,系统继续往下走。典型如 Filter_Plugin_Index_Begin、Filter_Plugin_Post_Core_Save。
function myplug_filter_post(&$post){
$post->Title = $post->Title . ' | 本站原创';
}
$zbp->Add_Filter_Plugin('Filter_Plugin_Post_Core_Save','myplug_filter_post');关键点:参数是引用传递,直接改对象属性即可;返回值可有可无,但不要返回一个不相关的值把链路打断。
Include:插内容
Include 钩子只做一件事——在某个位置输出一段 HTML。它不改数据,只往页面上塞东西。典型如 Filter_Plugin_Admin_LeftMenu、主题里的各种 Add_Filter_Plugin。
最容易踩的坑
- 在 Include 钩子里读取并修改全局对象,指望页面数据被改掉——不会生效,因为那时候数据早就渲染完了
- 在 Filter 钩子里直接 echo,会破坏响应头或干脆输出到错误的位置
- 同一个函数挂到多个钩子上,结果同一个位置被插了两次
判断口诀
要改数据用 Filter,要加显示用 Include。拿不准的时候看钩子名:带 Core_Save、Validate、Begin 的多半能改数据;带 LeftMenu、Footer、Top 的多半只是插内容。
2026年10月20日 14:58
前后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日