WordPress极简博客 WordPress极简博客
  • 新鲜事
  • 战疫情
  • UI素材
    • UI素材
    • 电商/节日
    • PPT
      • 节日庆典
      • 工作汇报
      • 商业计划书
    • word
      • 简历竞聘
      • 合同/公文
  • 创客头条
    • 音乐分享
    • 初创文章
    • 极客头条
    • 数码解说
    • 生活趣事
    • 生活日记
  • 全球科技
    • 新浪博客
    • A5资讯
    • 环球网新闻
  • 编程教学
    • Linux安全栏目
      • Linux运维安全汇总
      • DDOS攻击防护
      • XSS攻击防护
      • SQL安全防护
    • Python技术栏目
      • Python基础入门
      • Python基础结构
    • WordPress技术栏目
      • WP主题
      • WordPress技术教程
      • RIPRO主题美化
    • WordPress漏洞发布
    • 技术教程汇总
  • 专题
  • 基友
  • 隐私
  • 云优化
  • 注册
    登录
立即登录
  • 首页
  • 云优化
  • 新疫情
  • 新鲜事
    • 热文
    • 极客
    • 生活
  • 技术篇
    • WP主题
    • 技术教程
    • Python入门
    • Python基础
  • 专题篇
  • 友链君

WordPress删除在类中添加的action或filter钩子

夏柔4月 28, 2020

WordPress 可以通过add_action()和add_filter()将函数挂载到对应的钩子中,从而实现对功能的修改。

我们在进行WordPress开发的时候,有时需要对已经挂载的函数做一些修改操作,可能就需要先取消挂载原有的函数,然后将我们自己函数挂载到钩子中。相信不少朋友都知道可以使用remove_action()或remove_filter()函数即可轻松完成这个操作。

以下是一个简单的示例:

假设有一个插件通过add_action()和add_filter()挂载了自定义函数:

add_action('save_post', 'my_action_callback');
add_filter('the_content', 'my_filter_callback');

我们只需要通过下面的代码即可取消挂载上面的函数:

remove_action('save_post', 'my_action_callback');
remove_filter('the_content', 'my_filter_callback');

看起来非常简单,对吧?但是如果在一个类中挂载了函数,又该如何取消挂载呢?比如:

class Some_Plugin_Class {
 
	function __construct() {
		add_action( 'save_post', array( $this, 'my_action_callback' ));
        }
 
        function my_action_callback(){
         //do something
        }
 
}
 
$some_plugin_class = new Some_Plugin_Class();

如果这个类有实例

由于action是在类中注册的,因此必须使用类对象才能访问其钩子。对于熟悉PHP的朋友,可以看出上面的类初始化了一个实例,也就是一个类对象,那我们就可以通过下面的代码取消挂载:

//访问类实例对象
global $some_plugin_class; 

//取消挂载函数
remove_action('save_post', array($some_plugin_class, 'my_action_callback')); 
 

如果这个类没有实例

如果某个类由于某种原因没有实例(即静态类),请使用类的名称代替实例:

//取消挂载静态类的钩子函数
remove_action('save_post', array('Some_Plugin_Class', 'my_action_callback')); 

注意:优先级必须匹配

如果在添加action时使用了优先级参数,则remove_action()必须具有相同的优先级参数才能正确取消挂载。比如:

class Some_Plugin_Class {
 
	function __construct() {
		add_action( 'save_post', array( $this, 'my_action_callback' ), 57);
        }
 
        function my_action_callback(){
         //do something
        }
 
}
 
$some_plugin_class = new Some_Plugin_Class();

这个时候,我们应该在取消挂载时使用相同的优先级参数“57”:

//访问实例对象
global $some_plugin_class;

//使用相同的优先级取消挂载
remove_action('save_post', array($some_plugin_class, 'my_action_callback'), 57); 

以上就是今天的内容,推荐继续阅读:

#action#filter
0
分享
夏柔 站长
文章 708评论 23
赞赏
夏柔
相关文章
  • 自定义onion域名
  • 宝塔linux面板一键工具箱
  • 7种提高代码阅读能力的方法
  • 保护你的WordPress,修改服务器默认用户名root
  • Python多线程扫描端口
  • ThnBo-一款针对WordPress开发的缩略图美化插件,为广大站长提供缩略图的美化便利
  • WordPress去除index.php的方法
  • WordPress美化-文字渐变特效
  • WordPress美化-抖动图片
  • 使用HBuilderX封装H5
23 9月, 2019
新手教程【6】-建站进阶篇
夏柔
站长
夏山如碧 - 怀柔天下
708文章
23评论
58144K获赞
版权声明

文章采用创作共用版权 CC BY-NC-ND/2.5/CN 许可协议,与本站观点无关。

如果您认为本文侵犯了您的版权信息,请与我们联系修正或删除。
投诉邮箱wpsite@aliyun.com

栏目推荐
Python基础入门30
WordPress技术教程265
前沿技术情报所7
城市创新——新消费8
最近有哪些不可错过的热文5
程序员的养生之道0
疫情实况
石家庄52例确诊详情:含多名小学生
1月 18, 2021
黑龙江新增7例确诊 81例无症状
1月 18, 2021
31省新增本土确诊93例:河北54例
1月 18, 2021
更多
每日快讯
石家庄52例确诊详情:含多名小学生
1月 18, 2021
黑龙江新增7例确诊 81例无症状
1月 18, 2021
牛羊肉价格每公斤超74元
1月 18, 2021
男子辱骂防疫人员:你侵犯我隐私
1月 18, 2021
栖霞金矿事故被困工人传回纸条
1月 18, 2021
31省新增本土确诊93例:河北54例
1月 18, 2021
氧气告急 巴西民众排队领购氧气
1月 17, 2021
全国大部地区下周将开启升温模式
1月 17, 2021
更多
  • 新鲜事
  • 疫情实况
  • UI素材
  • 技术教程
  • 音乐分享
  • 专题
  • 友情
  • 隐私
  • 云优化
Copyright © 2019-2021 WordPress极简博客. Designed by 骚老板. 辽公网安备21010502000474号