WordPress 中有一种叫执行挂勾的机制,允许插件把一些功能“挂载”到 WordPress 当中。

也就是说,在系统运行至某一个环节时,去调用插件内的一些函数。

WordPress中有2个函数可以让我们执行WordPress标准操作到时候调用我们自定义的函数,这2个函数分别是add_action()和add_filter()。

先看看WordPress里面关于这2个函数的定义,在wp-includes/plugin.php文件中,先看add_filter()的定义:

function add_filter($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
global $wp_filter, $merged_filters;
$idx = _wp_filter_build_unique_id($tag, $function_to_add, $priority);
$wp_filter[$tag][$priority][$idx] = array(‘function’ => $function_to_add, ‘accepted_args’ => $accepted_args);
unset( $merged_filters[ $tag ] );
return true;
}

再看看add_action()函数的定义:

function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
return add_filter($tag, $function_to_add, $priority, $accepted_args);
}

看到这里你也许就明白了,其实add_action()是调用add_filter()的功能,没有加入新的处理操作,说明这两个函数是没有什么区别的。

下面来详细说说add_filter()函数。

add_filter( $tag, $function_to_add, $priority, $accepted_args );

  • $tag (required) – 过滤钩子的名称
  • $function_to_add  (必须) – 要挂载到过滤钩子的函数名称
  • $priority (可选) -一个整数用来判断我们的函数什么时候执行,默认数值是10:这个数值你可以设置较高,也可以设置较低。数值的高低决定函数运行的优先级,数值越低优先级越高
  • $accepted_args  (可选) – 一个整数用来设定过滤钩子接受的参数的个数,默认值是1

最后,我们来看一种实用场景,eg:注册的邀请码和输入密码注册 我用了2个插件,怎么让邀请码在最下面呢?  不知道怎么控制他的输出顺序

老鸟笔记Wordpress 第1张

我们分别查看这2个插件的filter执行优先级,发现邀请码优先级为默认值10,输入密码注册插件优先级为20。搜索插件文件中add_filter或add_action

邀请码插件优先级修改办法如下图:

老鸟笔记Wordpress 第2张