Hook to add_action('updated_option_my_option', [$this, 'save_data'], 10, 3]);

i want to modify my options data after save. Therefore i want to hook into "updated_option". This works withou

i want to modify my options data after save. Therefore i want to hook into "updated_option". This works without problem.

I create a new option called "my_update_option" and want also hook into "updated_option_my_update_option" but this won't work.

Did anyone know whats wrong in my code below?

class MyClass {

public function __construct()
{
    add_action('admin_init', [$this, 'theme_init']);
    add_action('admin_menu', [$this, 'theme_menu']);

    add_action('updated_option', [$this, 'save_options'], 10, 3);
    add_action('updated_option_my_update_option', [$this, 'save_my_update_option'], 10, 3);
}

public function theme_init()
{
    register_setting('my_update_option', 'theme_options', 'lapocus_validate_options', 'checkOption');
}

public function theme_menu()
{
    add_menu_page('Main Page', 'Main Page', 'my_update_option', 'menu-slug', [$this, 'main_page'], 'dashicons-admin-network', 2);
    add_submenu_page('menu-slug', 'Sub Page', 'Sub Page','my_update_option', 'menu-slug' . '-subpage-online-form', [$this, 'subpage_online_form']);
}

public function save_my_update_option($oldvalue, $value, $option) {
   // do something
}

i want to modify my options data after save. Therefore i want to hook into "updated_option". This works without problem.

I create a new option called "my_update_option" and want also hook into "updated_option_my_update_option" but this won't work.

Did anyone know whats wrong in my code below?

class MyClass {

public function __construct()
{
    add_action('admin_init', [$this, 'theme_init']);
    add_action('admin_menu', [$this, 'theme_menu']);

    add_action('updated_option', [$this, 'save_options'], 10, 3);
    add_action('updated_option_my_update_option', [$this, 'save_my_update_option'], 10, 3);
}

public function theme_init()
{
    register_setting('my_update_option', 'theme_options', 'lapocus_validate_options', 'checkOption');
}

public function theme_menu()
{
    add_menu_page('Main Page', 'Main Page', 'my_update_option', 'menu-slug', [$this, 'main_page'], 'dashicons-admin-network', 2);
    add_submenu_page('menu-slug', 'Sub Page', 'Sub Page','my_update_option', 'menu-slug' . '-subpage-online-form', [$this, 'subpage_online_form']);
}

public function save_my_update_option($oldvalue, $value, $option) {
   // do something
}
Share Improve this question asked Apr 12, 2022 at 4:52 pennylanepennylane 1211 bronze badge
Add a comment  | 

1 Answer 1

Reset to default 1

This is no updated_option_{$option} filter. You'd have to use update_option_{$option} instead:

    /**
     * Fires after the value of a specific option has been successfully updated.
     *
     * The dynamic portion of the hook name, `$option`, refers to the option name.
     *
     * @since 2.0.1
     * @since 4.4.0 The `$option` parameter was added.
     *
     * @param mixed  $old_value The old option value.
     * @param mixed  $value     The new option value.
     * @param string $option    Option name.
     */
    do_action( "update_option_{$option}", $old_value, $value, $option );

Don't forget to remove your filter before if you save the option again:

class MyClass {

public function __construct()
{
    add_action('admin_init', [$this, 'theme_init']);
    add_action('admin_menu', [$this, 'theme_menu']);

    add_action('updated_option', [$this, 'save_options'], 10, 3);
    add_action('update_option_my_update_option', [$this, 'save_my_update_option'], 10, 3);
}

public function theme_init()
{
    register_setting('my_update_option', 'theme_options', 'lapocus_validate_options', 'checkOption');
}

public function theme_menu()
{
    add_menu_page('Main Page', 'Main Page', 'my_update_option', 'menu-slug', [$this, 'main_page'], 'dashicons-admin-network', 2);
    add_submenu_page('menu-slug', 'Sub Page', 'Sub Page','my_update_option', 'menu-slug' . '-subpage-online-form', [$this, 'subpage_online_form']);
}

public function save_my_update_option($oldvalue, $value, $option) {
  // Begin prevent infinite loop
  remove_action('update_option_my_update_option', [$this, 'save_my_update_option'], 10);

  // do something
  $value = $this->change_value($old_value, $value);

  // save the option again
  update_option('my_update_option', $value);

  // End prevent infinite loop
  add_action('update_option_my_update_option', [$this, 'save_my_update_option'], 10, 3);
}

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1738631881a4066499.html

相关推荐

  • 鸿蒙开发:Canvas绘制之画笔对象Brush

    前言本文基于Api13在之前的文章中,我们主要针对Pen对象做了概述,知道了Pen对象主要用于修改绘制图形的轮廓信息,如果你想要实现一个实心的效果,那么就必须需要Brush对象了。我们还是拿着前边的案例代码做演示,使用Brush对象来实现一

    2小时前
    00
  • 了解HarmonyOS NEXT工程目录结构

    创建第一个工程如果你是首次打开DevEco Studio,那么首先会进入欢迎页。在欢迎页中单击“Create Project”,进入项目创建页面。选择‘Application’,然后选择‘Empty Ability’,单击‘Next’进入项

    2小时前
    00
  • 鸿蒙开发:事件订阅EventHub

    前言有这样一个案例,页面A跳转到了页面B,页面B又跳转了页面C,在页面C中需要把数据回调至页面A,我们该如何去做?又或者,在一个模块中需要调用另一个模块中的方法,又该如何调用?在很多的场景下,我们都会想到回调的方式,如果层级较多呢?逐级回调

    2小时前
    00
  • SEM

    在集成电路制造领域,纳米级晶圆缺陷的检测与分类对于后续的根本原因分析及产量提升至关重要。扫描电子显微镜(SEM)图像中存在的复杂背景图案以及缺陷多样化的纹理特征构成了重大挑战。传统方法通常受限于数据不足、标签欠缺和较差的迁移性。在本文中

    2小时前
    00
  • 一站式解决Rstudio使用问题:常见错误与解决方案汇总

    Rstudio在使用过程中经常遇到的问题我们已经更新到《常见问题》文档中,本篇就做一下汇总,一次性说清Rstudio问题解决方法。《常见问题》文档链接:一、“转圈圈”现象描述登录时转圈圈是大内存使用的通病,《R语言实战第三版》已经把这个问题

    2小时前
    00
  • MySQL源码学习系列(二)

    在实际工作中,我们常常会遇到各种各样的数据库问题,比如查询性能低下、数据不一致等。为了更好地诊断和解决这些问题,MySQL 提供了丰富的日志功能,其中 general log 和慢查询日志(slowlog)是两个非常重要的日志类型。Gene

    1小时前
    10
  • 揭秘 NVIDIA Dynamo:分布式AI推理的高效引擎

    全文概览随着生成式AI模型规模的爆炸式增长,企业面临推理成本激增、分布式部署复杂度高、资源利用率低等挑战。传统推理框架在跨多节点扩展时,常因KV缓存重复计算、GPU负载不均、通信延迟等问题导致性能瓶颈。NVIDIA Dynamo作为新一代开

    1小时前
    10
  • CURL 那些不太为人知但强大的功能

    写在前面博文内容为 curl 不长用使用技巧简单整理理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,

    1小时前
    10
  • 快升级!etcd官方v3.5.21版本深度解析,性能优化+兼容性全掌握

    开篇导语"3小时前,etcd社区刚刚发布了v3.5.21版本!作为云原生领域的核心存储组件,这次更新包含5768个 commits 的硬核优化。无论是开发者还是运维工程师,都需要关注这次升级的细节——本文将带你快速上手,揭秘新特性

    1小时前
    00
  • Power BI零售管理:用产品图片展示价格分布

    以下Power BI图表用来展示不同价格区间的产品丰富度,常用于零售业商品管理领域。所有产品配有图片(虚拟),非常直观。实际应用时也可以将价格带维度替换为产品品牌、品类、系列主题等。实现原理是DAX+HTML,新建一个HTML度量值,度量值

    1小时前
    00
  • 教你 1 小时搭建属于自己的 AI 知识库,Ollama + MaxKB 超详细教程略

    教你 1 小时搭建属于自己的 AI 知识库,Ollama + MaxKB 超详细教程略前言网络组建不易,学习网络知识就要循序渐进,别急,看看这个文章,掌握如何通过 、、、络!作者:神的孩子都在歌唱我们经常为海量文档找不到关键内容而烦恼,那

    1小时前
    00
  • 微博网页端通过轮询收发消息,凭什么没有延时!(第48讲)

    《架构师之路:架构设计中的100个知识点》48.WEBIM消息实时性有水友问我说,微博网页端IM通过HTTP收发消息,会不会有延时?之前做过几十年IM架构,今天和大家聊聊这里面的技术点。WebIM一般如何实现消息推送?通常的有三种实现方式

    1小时前
    00
  • 800G光模块:AI算力驱动的未来网络核心

    近年来,以ChatGPT为代表的AI大模型的快速崛起,使得全球对算力的需求呈现爆炸式增长。在AI算力集群中,800G光模块凭借更高的传输速率和更低的功耗,为大规模模型训练和推理任务提供高速低延迟的数据互联,成为未来算力网络不可或缺的核心组件

    55分钟前
    10
  • Claude的SVG绘图能力:AI视觉创作的新境界

    在人工智能领域,Claude 不仅以强大的代码生成能力闻名,其 SVG 绘图功能也正在被越来越多用户发掘和赞赏。这项能力展现了 Claude 在视觉创意方面的惊人潜力,为内容创作者提供了一个强大的辅助工具。惊人的视觉理解能力Claude 的

    41分钟前
    00
  • utterances

    多听,少说,接受每一个人的责难,但是保留你的最后裁决。——莎士比亚《哈姆雷特》GitHub - utteranceutterances:

    34分钟前
    00
  • AI提示词(Prompt)设计优化方案

    AI 提示词(Prompt)设计优化方案 | 高效使用 AI 工具嘿,各位技术探索家们!在这个 AI 横行的时代,你是不是常常感觉自己和 AI 之间隔着一层 “神秘面纱”?明明输入了指令,AI 给出的结果却总是差强人意。其实啊,这里面的关键

    27分钟前
    00
  • visio验证过期如何激活的问题解决方案

    1.问题的出现今天上午去完成学校的老师布置的实验报告的时候,打开visio出现了下面的这个提示:本来我并没有在意这个问题,但是我想要打开模版去完成作业的时候,发现这个是真的打不开啊,我才意识到看来这个软件是真的到期了,但是非常庆幸的是我在网

    21分钟前
    00
  • 【PySpark大数据分析概述】01 大数据分析概述

    PySpark作为Apache Spark的Python API,融合Python易用性与Spark分布式计算能力,专为大规模数据处理设计。支持批处理、流计算、机器学习 (MLlib) 和图计算 (GraphX),通过内存计算与弹性数据集

    18分钟前
    00
  • 【蓝桥杯每日一题】3.28

    喵~ 今天要学习的算法是双指针,也被称为滑动窗口是⼀种优化暴⼒枚举策略的⼿段: • 当我们发现在两层 for 循环的暴⼒枚举过程中,两个指针是可以不回退的,此时我们就可以利⽤两个指针不回退的性质来优化时间复杂度。一、唯一的雪

    5分钟前
    00
  • 48days强训——day6

    第一题:大数加法链接:大数加法_牛客题霸_牛客网 描述以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。数据范围:s.length,t.length≤100000s.length,t.length≤100000,字符串

    3分钟前
    00

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信