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;
}
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);
}
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 );
最后,我们来看一种实用场景,eg:注册的邀请码和输入密码注册 我用了2个插件,怎么让邀请码在最下面呢? 不知道怎么控制他的输出顺序
我们分别查看这2个插件的filter执行优先级,发现邀请码优先级为默认值10,输入密码注册插件优先级为20。搜索插件文件中add_filter或add_action
邀请码插件优先级修改办法如下图: