黄聪:走进wordpress do_action函数
再看do_action函数。位于plugin.php352行。我把源码放在西街口这里,略去了其它辅助处理的语句。
如下:
function do_action($tag, $arg = '') {     ++$wp_actions[$tag]; //计数器加1,did_action中用到       do {         foreach ( (array) current($wp_filter[$tag]) as $the_ )             if ( !is_null($the_['function']) )                 call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args']));       } while ( next($wp_filter[$tag]) !== false );       array_pop($wp_current_filter); }
可以看出,主要是个do-while循环,其中涉及了两个标准函数:
current 是php标准函数,返回数组当前元素。
call_user_func_array是php标准函数,执行用户自定义的函数,第一个参数是函数名,第二个是自定义函数的参数数组。
这样do_action函数一目了然,首先计数器加1,然后执行循环。
循环体中,执行名字保存于全局数组$wp_filter的自定义函数。
关于$wp_filter,$wp_current_filter是什么,马上讲到。
黄聪:走进wordpress do_action函数的更多相关文章
- 黄聪:《跟黄聪学WordPress插件开发》
		续<跟黄聪学WordPress主题开发>之后,又一个作品完成!<跟黄聪学Wordpress插件开发>,国内最好的Wordpress插件开发视频教程!! 目录预览: WordPr ... 
- 黄聪:《跟黄聪学WordPress主题开发》
		又一个作品完成!<跟黄聪学Wordpress主题开发>,国内最好的Wordpress主题模版开发视频教程!! 目录预览: WordPress官方源文件层式结构讲解 WordPress数据库 ... 
- 黄聪:wordpress教程
		又一个作品完成!<跟黄聪学Wordpress主题开发>,国内最好的Wordpress主题模版开发视频教程!! 目录预览: WordPress官方源文件层式结构讲解 WordPress数据库 ... 
- 黄聪:WordPress动作钩子函数add_action()、do_action()源码解析
		WordPress常用两种钩子,过滤钩子和动作钩子.过滤钩子相关函数及源码分析在上篇文章中完成,本篇主要分析动作钩子源码. 然而,在了解了动作钩子的源码后你会发现,动作钩子核心代码竟然跟过滤钩子差不多 ... 
- 黄聪:WordPress 函数:apply_filters()(创建过滤器)
		apply_filters() 函数用来创建一个过滤器,大多数被用在函数中,是 WordPress 插件机制中非常重要的一个函数,能让其它的主题和插件对一个值进行修改过滤. 用法 apply_filt ... 
- 黄聪:wordpress中remove_action、add_action、 do_action()的hook钩子都有哪些
		原文地址:http://codex.wordpress.org/Plugin_API/Action_Reference muplugins_loaded After must-use plugins ... 
- 黄聪:WordPress 多站点建站教程(七):多站点函数
		1.get_blog_details(获取子站点信息) 返回多站点博客信息即wp_blogs表. //显示站点名称 $blog_details = get_blog_details(1); echo ... 
- 黄聪:WordPress 函数:add_filter()(添加过滤器)
		add_filter() 可以挂载一个函数到指定的过滤器上. 用法 add_filter( $tag, $function_to_add, $priority, $accepted_args ); 参 ... 
- 黄聪:WordPress 多站点建站教程(六):使用WP_Query、switch_to_blog函数实现获取子站点分类中的文章
		首先在你使用主题的funtions.php里面添加下代码: //根据时间显示最新的分类文章内容,每个站点显示一篇内容 //$blog_id 子站点ID //$catid 分类ID wp_reset_q ... 
随机推荐
- C++ Primer : 第二章:变量和基本类型(1)
			变量和基本类型之第一篇:基本内置类型和变量 一. (1) C++定义了一套包括算数类型和空类型,这些类型有:布尔类型bool,字符类型char,宽字符类型wchar_t,Unicode字符char16 ... 
- shamir叠像术                                                       分类:            图像处理             2015-07-08 16:50    17人阅读    评论(1)    收藏
			K=imread('SHNU.bmp'); height=info.Height; width=info.Width; A=zeros(height,width); B=zeros(height,wi ... 
- spark优化之优化数据结构
			概序: 要减少内存的消耗,除了使用高效的序列化类库以外,还有一个很重要的事情,就是优化数据结构.从而避免Java语法特性中所导致的额外内存的开销,比如基于指针的Java数据结构,以及包装类型. 有一个 ... 
- HDU-4533 威威猫系列故事——晒被子(区间更新)
			题目大意:在平面直角坐标系的第一象限中,给出n个矩形(可能重叠).有m次询问,每次询问点(t,t)的左下方的正方形区域中矩形的总面积(重叠部分重叠几次就得统计几次). 题目分析:线段树的叶子节点x维护 ... 
- 黑马程序员——JAVA基础之构造函数,构造代码块
			------- android培训.java培训.期待与您交流! ---------- 构造函数特点: 1. 函数名与类名相同 2. 不用定义返回值类型 3. 不可以写return语句 构造函数 ... 
- CentOS 6 DEPRECATED
			Created by YEISON CAMARGO, last modified by John Boteler on 2016.02.02 Go to start of metadata Abo ... 
- Linux comands
			https://www.mankier.com/8/vmstat http://docs.oracle.com/cd/E23824_01/html/821-1451/spmonitor-22.html ... 
- android:ScrollView嵌套ListView的问题
			在ScrollView中嵌套使用ListView,看起来ListView只会显示一行多一点,不能滑动.ListView的高度怎么改都有问题,与预期不符合.搜索了一些解决方案,我觉得最好不要用这样的设计 ... 
- 从开发的角度比较 ASP.NET Web 服务与 WCF
			Windows Communication Foundation (WCF) 具有一个 ASP.NET 兼容模式选项,用户使用此选项可以对 WCF 应用程序进行编程和配置,使其像 ASP.NET We ... 
- 动态进行JQ Validate 的方法
			$.validator.unobtrusive.parse($('form[action = "@Url.Action()"]')); 
