您现在的位置是:首页 > cms教程 > WordPress教程WordPress教程
WordPress钩子函数do_action()详解
芷蕾2025-03-02WordPress教程已有人查阅
导读要想随心所欲的给主题添加功能,wordpress的钩子和过滤器应该要能明白。wordpress钩子和过滤器也是插件开发的基本知识。准备工作--给主题的头部文件加上wp_head();函数
要想随心所欲的给主题添加功能,wordpress的钩子和过滤器应该要能明白。wordpress钩子和过滤器也是插件开发的基本知识。
准备工作--给主题的头部文件加上wp_head();函数
介绍与分析:要是不加这个函数,有的插件将不能正常工作!该函数位于wp-includes/general-template.php文件的1577行,原函数如下:
②do_action函数:do_action执行了一个“动作”,这个动作名称就是这个参数"wp_head",这个“wp_head动作”是不需要定义的,do_action含有自动定义的功能。也就是不需要事先定义这个参数wp_head是什么、要干嘛,而do_action就会自动定义一个名叫wp_head的动作,并执行它。
但是,这个动作是要干什么,这里我们还需要一个函数--add_action()。注意,动作钩子的两个基本函数--add_action和do_action,位于同一个文件wp-includes/plugin.php中。
③add_action()函数可以给“动作”添加具体事务,比如我们已经定义并执行了一个动作“饭前”,然后我们add_action('饭前 ','洗手'),就给这个“饭前”动作添加了具体内容,在程序中来讲,“洗手”这个参数应该是个函数名称,也就是‘饭前’动作要执行这个函数。
我们do_action里面的动作--'wp_head',叫做动作钩子(hook),钩子可以挂东西,所以add_action就是往这个钩子上挂函数,然后执行那个钩子的时候,也就是执行所有挂在这个钩子上的函数!
钩子
函数:
上面的函数添加在哪里呢?主题的functions.php,或者其它主题被包含的函数文件,好吧,只要主题会执行的地方。
这个应用很简单,很多插件就是这样工作的,像这样来输出css或js代码。
简单示例二--通过钩子来传递参数
do_action('hookname',$arg_1,$arg_2,$arg_3),除了钩子名外,还要带3 个参数;然后add_action()中,除了钩子名,函数名,优先级,剩下那个就是参数的个数了,也就是挂靠的这个函数需要多少个参数。
do_action传了3个参数,那么对应的add_action()中的accepted_args--函数需要的参数个数,可以为0、1、2、3,少接受可以,但是多了就木有了。
到这里,动作的使用已经很清楚了。然而关于动作钩子(hook)的函数不仅仅只有这两个,还有has_action() do_action_ref_array() remove_action() remove_all_action()....要想再深入了解,可以看官网了。
准备工作--给主题的头部文件加上wp_head();函数
介绍与分析:要是不加这个函数,有的插件将不能正常工作!该函数位于wp-includes/general-template.php文件的1577行,原函数如下:
function wp_head() {
do_action('wp_head');
}
①可以看到这个wp_head函数调用了do_action函数,传入参数"wp_head"。该函数(do_action函数)位于wp-includes/plugin.php文件。不过这个函数就比较复杂了,这里就不讲解了,只需要明白会用就好。②do_action函数:do_action执行了一个“动作”,这个动作名称就是这个参数"wp_head",这个“wp_head动作”是不需要定义的,do_action含有自动定义的功能。也就是不需要事先定义这个参数wp_head是什么、要干嘛,而do_action就会自动定义一个名叫wp_head的动作,并执行它。
但是,这个动作是要干什么,这里我们还需要一个函数--add_action()。注意,动作钩子的两个基本函数--add_action和do_action,位于同一个文件wp-includes/plugin.php中。
③add_action()函数可以给“动作”添加具体事务,比如我们已经定义并执行了一个动作“饭前”,然后我们add_action('饭前 ','洗手'),就给这个“饭前”动作添加了具体内容,在程序中来讲,“洗手”这个参数应该是个函数名称,也就是‘饭前’动作要执行这个函数。
我们do_action里面的动作--'wp_head',叫做动作钩子(hook),钩子可以挂东西,所以add_action就是往这个钩子上挂函数,然后执行那个钩子的时候,也就是执行所有挂在这个钩子上的函数!
钩子
函数:
<?php
do_action($tag, $arg);
//$tag 必需、你想创建的动作钩子的名称
//$arg 传递给已有的动作钩子的值
?>
<?php
add_action( $tag, $function_to_add, $priority, $accepted_args );
//$tag 参数必需,动作钩子的名称
//$function_to_add 参数为必需,要执行的函数
//$priority 参数为int(整数),数字越小越先调用
//$accepted_args 参数为int(整数),函数需要的参数个数,默认1;自己理解:就是$function_to_add函数需要的参数个数
?>
简单示例一--通过wp_head()函数来往wp头部输出一个meta信息
<?php
add_action('wp_head','echo_author');
function echo_author(){
echo '<meta name="author" content="阿树工作室" />';
}
?>
我们只需要往wp_head动作上添加一个函数,输出meta信息即可!上面的函数添加在哪里呢?主题的functions.php,或者其它主题被包含的函数文件,好吧,只要主题会执行的地方。
这个应用很简单,很多插件就是这样工作的,像这样来输出css或js代码。
简单示例二--通过钩子来传递参数
do_action('hookname',$arg_1,$arg_2,$arg_3),除了钩子名外,还要带3 个参数;然后add_action()中,除了钩子名,函数名,优先级,剩下那个就是参数的个数了,也就是挂靠的这个函数需要多少个参数。
do_action传了3个参数,那么对应的add_action()中的accepted_args--函数需要的参数个数,可以为0、1、2、3,少接受可以,但是多了就木有了。
<?php
add_action('ashu','function1',10,2);
add_action('ashu','function2',1,3);
function function1($a1,$a2){
echo $a1.'<br />'.$a2;
}
function function2($a1,$a2,$a3){
echo $a1.$a2.$a3.'<br />';
}
$arg_1 = '这里是阿树工作室';
$arg_2 = '这里有主题制作教程';
$arg_3 = '我们提供主题定制服务';
do_action('ashu',$arg_1,$arg_2,$arg_3);
?>
可以看到定义并执行了一个叫“ashu”的动作钩子,并且传3个参数给动作函数,然后使用add_action,往这个钩子上挂了 2个函数,function1函数需要2个参数,function2需要3个参数,所以使用add_action的时候后面对应的参数个数也是2和3。然后优先级分别是10和1,所以function2先执行。到这里,动作的使用已经很清楚了。然而关于动作钩子(hook)的函数不仅仅只有这两个,还有has_action() do_action_ref_array() remove_action() remove_all_action()....要想再深入了解,可以看官网了。
本文标签:
很赞哦! ()
图文教程
wordpress创建多个网站的方法介绍
以前Wopus团队分别用Wordpress建立了Wopus中文平台、WopusIDC平台WordPress主题站、WordPress插件基地等系列网站。这个方法虽然很简单很实用,但确实很傻瓜
怎么删除wordpress主题链接
怎么去除wordpress主题链接去除wordpress主题链接的方法:首先打开主题文件夹:wp-content/themes/主题名称/footer.php;
wordpress网站下载到本地运行测试
作为站长而言,有时候我们可能会碰到更换服务器或者为网站做一个整体布局修改和升级,我们首先需要做的就是对数据库和整个wordpress网站的 主题和插件等等相关文件进行本地备份。
代码怎么移除WordPress版本号
默认情况下,WordPress会在页头输出版本号,有 安全隐患。在当前主题的functions.php中添加以下代码,可同时移除feed和js/css中的WordPress版本号:
相关源码
-
(PC+WAP)楼承板建筑工程合金钢铁材料pbootcms网站源码下载为楼承板生产商及建筑工程企业设计的响应式网站模板,采用PbootCMS内核开发,同步适配电脑与移动设备浏览。通过模块化结构展示工程案例、产品参数等专业内容,帮助建筑建材企业建立标准化数字展示平台,提升行业专业形象。查看源码 -
帝国CMS7.2互联网自媒体门户整站带数据源码免费下载分享一款高仿极客网门户模板,帝国cms7.2版本,非常适合互联网、自媒体、文章门户网站使用。测法发现备份数据恢复报错,找了几个版本的都是一样的,有能力的自行修复查看源码 -
自适应电子科技类产品公司pbootcms网站模板基于PbootCMS内核开发,为电子科技类企业设计,适用于电子产品展示、企业官网等场景。该模板采用开源架构,用户可自由访问和修改源码,灵活适配各类行业需求,无需二次开发成本查看源码 -
(自适应响应式)HTML5幕墙装饰工程建筑装修公司pbootcms模板下载基于PbootCMS开发的响应式模板,为幕墙工程、建筑装饰企业设计,通过数字化展示提升企业专业形象与项目展示能力。结构化数据标记增强项目案例收录,智能URL路由优化,支持每个工程案例独立设置关键词与描述查看源码 -
(PC+WAP)激光水幕音乐喷泉设备工程网站源码下载本模板基于PbootCMS系统开发,为喷泉设备工程类企业设计,特别适合展示音乐喷泉、激光水幕等水景艺术项目。采用响应式技术,确保各类工程案例在不同设备上都能呈现视觉效果。查看源码 -
(PC+WAP)红色家装设计智能家居家具建材pbootcms网站源码下载本模板基于PbootCMS系统开发,为智能家居、家装设计及家具建材行业设计。采用现代化布局风格,突出家居设计行业特色,适合展示各类家居产品、设计方案和建材信息。查看源码
| 分享笔记 (共有 篇笔记) |

