青岛企业做网站,柳州专业网站推广公司,购物商城项目,wap手机商城网站源码钩子是用一段代码添加/修改另外一段代码的方式#xff0c;是 WordPress插件和主题与 WordPress 内核交互的基础#xff0c;钩子在 WordPress 内核中也被广泛使用。WordPress 中有两种钩子#xff0c;Action 和 Filter。使用钩子时#xff0c;我们需要先编写一个自定义函数作…钩子是用一段代码添加/修改另外一段代码的方式是 WordPress插件和主题与 WordPress 内核交互的基础钩子在 WordPress 内核中也被广泛使用。WordPress 中有两种钩子Action 和 Filter。使用钩子时我们需要先编写一个自定义函数作为钩子的回调函数然后使用 add_action 或 add_filter 函数将我们的回调函数挂载到指定的 Action 或 Filter 上。
Action 可以让我们在函数执行的某个时间点添加一些自定义操作如输出内容到文章尾部Filter 和 Action 类似不同的是我们可以通过 Filter 修改并返回数据因此挂载到 Filter 上的函数会接受一些变量并返回修改后的变量。简单来说Action 用来添加功能Filter 用来修改数据。
WordPress 内核提供了很多钩子来帮助开发者开发WordPress主题或插件。通过创建自定义钩子我们也可以让第三方开发者添加或修改我们的功能。 Action 是 WordPress 的两种钩子之一提供了一种在 WordPress 核心、主题或插件执行的特性时间点运行附加函数的功能。Action 和 Filter 是不一样的。
添加 Action 的操作 我们可以通过两个步骤添加一个函数到某个 Action。首先我们需要创建一个回调函数这个函数在 Action 运行时会被调用。其次我们需要把这个函数挂载到对应的 Action 钩子上面。使用 add_action() 函数至少需要传递两个参数 $tag (钩子名称) 和 $function_to_add (回调函数名)。
下面的例子在 init 钩子执行时运行
function wporg_custom() {// 执行某些操作
}
add_action(init, wporg_custom);优先级
如果一个钩子上面挂载了多个回调函数钩子就需要一个优先级来确定这些回调函数的执行顺序。优先级为整数默认值为 10数字越小优先级就越高。比如优先级为 11 的函数将在优先级为 10 的函数之后执行优先级为 9 的函数将在优先级为 10 的函数之前执行。
例如下面的回调函数全部挂载到了 init 钩子上面但他们有不同的优先级。
add_action(init, run_me_early, 9);
add_action(init, run_me_normal); // 如果没有指定优先级默认为 10
add_action(init, run_me_late, 11);参数个数
有时候回调函数需要接收一些额外的数据作为函数的参数。例如当 WordPress 保存一篇文章时将会运行 save_post 钩子这个钩子会传递两个参数给回调函数保存的文章 ID 和 文章对象
do_action(save_post, $post-ID, $post);所以当我们挂载函数到 save_post 钩子时我们可以指定它需要接收这两个参数
add_action(save_post, wporg_custom, 10, 2);然后我们就可以在回调函数中使用钩子提供的参数了。
function wporg_custom($post_id, $post){// 执行某些操作
}假设我们需要在 WordPress 的前端文章查询中修改获取搜索结果的查询我们可以使用 pre_get_posts 钩子。
function wporg_search($query) {if (!is_admin() $query-is_main_query() $query-is_search) {$query-set(post_type, [post, movie]);}
}
add_action(pre_get_posts, wporg_search);