WordPress Hooks、Actions 与 Filters 完全指南
欢迎阅读《WordPress Hooks、Actions 与 Filters 完全指南》。在广阔的 WordPress 开发领域中,理解 hooks、actions 和 filters,是释放这个强大平台全部潜力的前提。
Hooks 是 WordPress 自定义能力的支柱,让你能够平滑地修改和扩展它的功能。Actions 让你在运行期间的关键节点执行特定任务,Filters 则让你处理数据并返回修改后的结果。无论你是刚入门还是经验丰富的开发者,这份完整指南都会提供实用的思路与示例,帮助你真正驾驭 WordPress hooks、actions 和 filters 带来的灵活性与自定义能力。让我们开始,一起打开 WordPress 开发的无限可能。

Hooks
Hooks 是 WordPress 插件与主题开发的基础。它们是开发者把自定义代码“挂”进 WordPress 的具体位置,让你无需改动核心文件就能改变 WordPress 的运行方式。

WordPress Hooks 有两种类型:Actions 与 Filters
WordPress Hooks 由两种基本类型组成:Actions 和 Filters。Actions 让你在 WordPress 运行期间的预设节点执行特定任务,Filters 则让你修改并返回 WordPress 处理的任意数据。
Actions:
借助 action,你可以从 WordPress 中取出信息并加以处理,从而自定义某个函数的默认行为。action 执行完成后,不需要把任何数据回传给 WordPress。
添加 action 需要使用 add_action() 函数。WordPress 提供了若干便于使用 action 的函数,其中最常用的是这几个:
- add_action():把指定函数挂载到 do_action 流程中的某个 hook 上。
- remove_action():移除挂载在某个 action hook 上的函数。
- do_action():挂载到该 hook 上的函数会在这里被执行。
- has_action():检查某个 action 是否已经注册。

在 WordPress 代码中,action 的定义形式为
do_action( 'action_name', );
挂载到 do_action(‘wp_head’) 这个 action 上,就能在 WordPress 处理站点头部时执行自定义代码。该 action 不需要任何额外参数。
完整示例:
add_action( string $hook_name, callable $callback, int $priority = 10, int $accepted_args = 1 ): true
全部 action 的参考文档:
https://codex.wordpress.org/Plugin_API/Action_Reference
https://developer.wordpress.org/reference/functions/add_action/
Filters:
filter 会修改某个函数的默认行为。它的做法是处理自己接收到的数据,并在浏览器显示之前把结果返回给 WordPress。
示例:
- add_filter():把函数挂载到某个 hook 上
- remove_filter():移除挂载在指定 filter hook 上的函数
- doing_filter():检测当前正在执行的 filter
- has_filter():检查某个 filter 是否已经注册
在 WordPress 代码中,filter 的定义形式为
apply_filters( 'filter_name', 'value_to_be_filtered', );
其中 filter_name 字符串是 filter 的名称,value_to_be_filtered 变量是需要被过滤并返回的值,后面的变量则可以像 action 那样传入额外参数。
示例:apply_filters( ‘admin_footer_text’ , string $text ) 这个 filter 可以挂载,用来修改后台页脚显示的文字。自 WordPress 5.4 起,它的默认值会在后台页脚显示这句话:Thank you for creating with WordPress.
|
WordPress Hooks |
|
| Actions | Filters |
| Actions 用于在 WordPress 核心执行到某个特定节点时运行自定义函数。 | Filters 用于修改或自定义其他函数所使用的数据。 |
| 在 WordPress 代码中,action 由 do_action( ‘action_name’ ) 函数定义/创建。 | 在 WordPress 代码中,filter 由 apply_filters( ‘filter_name’, ‘value_to_be_filtered’ ) 函数定义/创建。 |
| Actions 也被称为 Action hooks。 | Filters 也被称为 Filter hooks。 |
| Actions 只能通过 Action 函数挂载,例如 add_action()、remove_action()。 | Filters 只能通过 Filter 函数挂载,例如 add_filter()、remove_filter()。 |
| Action 函数不需要向自己的回调函数传入任何参数。 | Filter 函数至少要向自己的回调函数传入一个参数。 |
| Action 函数可以执行任何类型的任务,包括改变 WordPress 的运行行为。 | Filter 函数的存在意义只是修改 filter 传给它的数据。 |
| Action 函数不应返回任何内容,但可以输出(echo)内容或与数据库交互。 | Filter 函数必须把修改结果作为输出返回。即使某个 filter 函数什么都没改,也必须把未经改动的输入原样返回。 |
| 只要代码有效,action 几乎可以执行任何操作。 | Filter 应当以隔离的方式工作,以免产生意料之外的副作用。 |
总而言之,掌握 WordPress hooks、actions 和 filters 这门功夫,就等于为自定义和增强 WordPress 网站打开了一扇通往无限可能的大门。理解 hooks 的工作方式、用好 actions 的能力、发挥 filters 的灵活性,你就能把网站的功能与外观塑造成完全贴合自身需求的样子。有了这份指南中的知识,你已经可以完全掌控自己的 WordPress 开发之路。所以,尽管去尝试、去创造,为你的用户带来出色的体验。拥抱 WordPress hooks、actions 和 filters 的多样性,释放你网站的真正潜力。祝你编码愉快!
你对 WordPress 的未来 感兴趣吗?来看看这篇文章!