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()函数的定义,我们可以看到该函数是把我们要hook的函数的一些变量存储在global $wp_filter这样一个全局数组中的,包括$tag,即我们要hook的函数,$priority即hook的顺序,还有就是$idx这个就是我们自定义函数的名称了。
值得注意的是如果我们在使用add_filter这个函数的时候如果指定顺序,那么默认的就是10,这个在插件开发的时候值得注意一下,以免和其它插件产生冲突。
博客发表新内容时用电子邮件通知朋友:
function email_friends($post_ID) {
$friends = '[email protected]'
mail($friends, "sally's blog updated" , 'I just put something on my blog: http://www.111com.net');
return $post_ID;
}
add_filter('publish_post', 'email_friends');
总结一下:网上很多说到add_filter与add_action的区别,说的主观上的区别,add_filter是指在数据显示之前对数据进行一些处理,而add_action则是执行一下复杂的操作。
其实二者在功能上是没有任何区别的
敢达决战官方正版 安卓版v6.7.9
下载敢达决战 安卓版v6.7.9
下载像素火影骨架佐助 (Perseverance Fire Shadow)手机版v1.16
下载要塞英雄 安卓版v33.20.0-39082670-Android
下载梦想城镇vivo最新版本 安卓版v12.0.1
梦想城镇vivo版是这款卡通风模拟经营类手游的渠道服版本,玩
怦然心动的瞬间 安卓版v1.0
怦然心动的瞬间是一款真人向的恋爱互动游戏,在游戏中玩家将扮演
曼尼汉堡店游戏 安卓版v1.0.3
曼尼汉堡店是一款非常好玩的精品恐怖类型冒险游戏,在这款游戏中
现代总统模拟器去广告版 安卓版v1.0.46
现代总统模拟器是一款休闲养成类游戏,可能对于不少的玩家来说都
现代总统模拟器付费完整版 安卓版v1.0.46
现代总统模拟器高级版在商店是需要付费的,相对于普通版本,高级