WordPress 函数do_action()详解和应用举例

1、do_action()函数声明(定义)作用
do_action()函数是WordPress的内部函数,作用是创建一个行为钩子,它没有返回值,单纯的就是在特定的地方执行插件或者主题开发者挂载的函数,一般存在于某个特殊的节点或者事件上(比如开始加载主题模板的时候或者发布一篇文章的时候),该函数让wordpress变得更加强大,扩展性更加好。例如wp_head()函数中只有一句代码就是:do_action(
‘wp_head’ ),他的意思就是执行挂载到wp_head这个动作钩子上的所有函数。
do_action($tag, $arg);
//$tag是必须的,为我们创建的动作名称;
//$arg 为我们要执行的"动作";
2、do_action()参数
这个函数可以包含两个或者多个变量,但是第一个$tag变量(动作钩子)是必须的,而且这个函数不会返回值。
$tag
(字符串)(必须)要执行的动作的名字。
$arg
(混合)(可选)额外的参数,会被传到调用的函数里,可以添加无限个,比如保存文章的时候触发 save_post
动作,就可以把保存的文章的 id 穿进去,让回调函数根据文章 id 进行操作。
3、do_action()函数应用示例
//先定义echo_meta,输出内容
function echo_meta(){
echo '<meta name="description" content="511遇见-不一样的遇见" />';
//然后将echo_meta挂载到wp_meta上
add_action('wp_meta','echo_meta');
}
//然后我们去执行wp_meta
function wp_meta() {
do_action('wp_meta');
}
我们再看一个例子:
//自定义回调函数zidingyihanshu(),该函数有两个参数
function zidingyihanshu( $canshu1, $canshu2 )
{
echo '<code>';
print_r( $canshu1 ); // 输出参数1
echo '</code>';
echo '<br />'.$canshu2; // 输出参数2
}
//把这个函数添加到woshigouzi这个钩子上,让他接受2个参数
add_action( 'woshigouzi', 'zidingyihanshu', 10, 2 );
// 为钩子定义参数值
$canshu1 = array(
'网站名称' => '511遇见网络:',
'这是真的吗?' => true,
'我多大了' => (int) 20 );
$canshu2 = '511遇见网络:"do_action函数应用实例"';
//执行挂载到woshigouzi上的函数
do_action( 'woshigouzi', $canshu1, $canshu2 );
下面我们再解释一下这个流程:
1. 我们先自定义了一个含有两个参数的回调函数;
2.紧着接我们通过add_action()这个函数把这个回调函数挂载到了woshigouzi这个动作钩子上,设置动作执行的优先级为10,并让这个回调函数可以接受两个参数;
3. 我们为这两个参数赋值;
4. 通过do_action()函数来执行挂在到woshigouzi这个动作钩子上面的函数,并把两个参数传给挂载到woshigouzi上面的回调函数;这个回调函数就会把这两个参数输出了;
一句话理解do_action()函数就是:执行挂载到钩子上的动作(回调函数实现的)。
WordPress 函数do_action()详解和应用举例的更多相关文章
- WordPress函数wp_page_menu详解
说明 该标签显示带有链接的WordPress页面列表,并且可以选择将 Home(主页)自动显示为列表中的一员.该标签是自定义侧边栏和标题栏的好帮手,同时还可以用在其它模板中. WordPress教程 ...
- 自写函数VB6 STUFF函数 和 VB.net 2010 STUFF函数 详解
'*************************************************************************'**模 块 名:自写函数VB6 STUFF函数 和 ...
- SQL Server数据库ROW_NUMBER()函数使用详解
SQL Server数据库ROW_NUMBER()函数使用详解 摘自:http://database.51cto.com/art/201108/283399.htm SQL Server数据库ROW_ ...
- PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
PHP函数篇详解十进制.二进制.八进制和十六进制转换函数说明 作者: 字体:[增加 减小] 类型:转载 中文字符编码研究系列第一期,PHP函数篇详解十进制.二进制.八进制和十六进制互相转换函数说明 ...
- PHP date函数参数详解
PHP date函数参数详解 作者: 字体:[增加 减小] 类型:转载 time()在PHP中是得到一个数字,这个数字表示从1970-01-01到现在共走了多少秒,很奇怪吧 不过这样方便计 ...
- SQL中CONVERT()函数用法详解
SQL中CONVERT函数格式: CONVERT(data_type,expression[,style]) 参数说明: expression 是任何有效的 Microsoft® SQL Server ...
- php中setcookie函数用法详解(转)
php中setcookie函数用法详解: php手册中对setcookie函数讲解的不是很清楚,下面是我做的一些整理,欢迎提出意见. 语法: bool set ...
- eval()函数用法详解
eval()函数用法详解:此函数可能使用的频率并不是太高,但是在某些情况下具有很大的作用,下面就介绍一下eval()函数的用法.语法结构: eval(str) 此函数可以接受一个字符串str作为参数, ...
- Python学习入门教程,字符串函数扩充详解
因有用户反映,在基础文章对字符串函数的讲解太过少,故写一篇文章详细讲解一下常用字符串函数.本文章是对:程序员带你十天快速入门Python,玩转电脑软件开发(三)中字符串函数的详解与扩充. 如果您想学习 ...
随机推荐
- ReactElement源码笔记
ReactElement 源码笔记 ReactElement通过 createElement创建,调用该方法需要 传入三个参数: type config children type指代这个ReactE ...
- HDOJ-6645(简单题+贪心+树)
Stay Real HDOJ-6645 由小根堆的性质可以知道,当前最大的值就在叶节点上面,所以只需要排序后依次取就可以了. #include<iostream> #include< ...
- 链表算法题之中等级别,debug调试更简单
文章简述 大家好,本篇是个人的第 5 篇文章 从本篇文章开始,分享关于链表的题目为中等难度,本次共有 3 道题目. 一,两数相加 1.1 题目分析 题中写到数字是按照逆序的方式存储,从进位的角度看,两 ...
- Java 多线程 01
多线程· Runnable 和 Thread 多线程的引入 * A:什么是线程 * 线程是程序执行的一条路径,一个进程中可以包含多条线程 * 多线程并发执行可以提高程序的效率,可以同时完成多项工作 * ...
- div中如何让文本元素、img元素水平居中且垂直居中
一.文本元素在div中的水平居中且垂直居中方法 html代码 <div id="box"> <p>文本元素</p> </div> c ...
- 漏洞复现-ActiveMq反序列化漏洞(CVE-2015-5254)
0x00 实验环境 攻击机:Win 10 靶机也可作为攻击机:Ubuntu18 (docker搭建的vulhub靶场) 0x01 影响版本 Apache ActiveMQ 5.13.0之前 ...
- 【Git】敏感信息保护
保护Git仓库敏感信息 代码中无可避免有一些敏感信息,包含但不限于,数据库信息,密钥,账号信息等等.通常我们会把这些信息放在配置文件,这些信息若泄露会造成安全问题. 以前我们做法,是把配置文件通过.g ...
- 字符串匹配-BF算法和KMP算法
声明:图片及内容基于https://www.bilibili.com/video/av95949609 BF算法 原理分析 Brute Force 暴力算法 用来在主串中查找模式串是否存以及出现位置 ...
- 对控制器类型“StudentController”的操作“Edit”的当前请求在下列操作方法之间不明确:
"/"应用程序中的服务器错误. 对控制器类型"StudentController"的操作"Edit"的当前请求在下列操作方法之间不明确:类型 ...
- vue 项目集成 husky+commitlint+stylelint
最近刚换了新工作,这两天也没有业务上的需求,做了一些前端工程化方面的东西.要在现有的项目中集成 husky+commitlint+stylelint,也不能对现有代码产生影响. 使用 lint 的目的 ...