Z-Blog 钩子怎么选:Add_Filter 和 Add_Action 到底差在哪

· zblog · 阅读 2
摘要

写插件第一步就卡在这个选择上。一句话区别:Filter 改数据,Action 做事。 Filter:有返回值,能改内容 典型如 Filter_Plugin_Index_Begin、文章内容过滤钩子。你拿到一个值,改完返回,后续流程用你的返回

写插件第一步就卡在这个选择上。一句话区别:Filter 改数据,Action 做事。

Filter:有返回值,能改内容

典型如 Filter_Plugin_Index_Begin、文章内容过滤钩子。你拿到一个值,改完返回,后续流程用你的返回值继续走。返回 null 通常等于「不干预」。

Action:没有返回值,只执行副作用

典型如保存成功后的通知、发邮件、写日志。你不能通过它改数据流。

判断口诀

  • 「我要把标题改一下」→ Filter
  • 「我要在保存后干点事」→ Action
  • 「我要两边都干」→ 挂两个钩子,不要在一个里硬塞

确认钩子名别靠猜

模型和教程里都经常把钩子名写错一个字母,挂上去毫无反应又不报错。写之前先 list_hooks 或直接查 zb_system/function/c_system_plugin.php,比试错快得多。