WooCommerce:在订单中保存对产品的更改时挂钩

2023-11-24

我已经找了好几个小时了...

在编辑现有订单中的产品数量后,我无法弄清楚如何在单击“保存”时执行功能。

我试过这个:

add_action('woocommerce_order_edit_product', 'your_function_name');
function your_function_name(){
//my php function code would be here
}

但单击“保存”时不会调用 your_function_name 函数。

我测试了该函数,当直接调用它时,它可以正常工作,所以我认为我弄错了钩子......


经过两天的努力,我发现了这个问题:有两个钩子,一个在保存之前,一个在保存之后:

  1. woocommerce_before_save_order_items
  2. woocommerce_saved_order_items

在后端保存订单时,两者都会被触发。一张保存前,一张保存后。

两个钩子都带有相同的变量:$order_id (int) & $items (array)

我想通过第一个钩子,您可以获取旧订单并将其内容与 items 数组进行比较以查看发生了什么变化。至少这是我现在正在努力实现的目标。

所以这就是你触发这个的方式:

add_action( 'woocommerce_before_save_order_items', 'so42270384_woocommerce_before_save_order_items', 10, 2 );
function so42270384_woocommerce_before_save_order_items( $order_id, $items ) {
    echo $order_id;
    var_dump( $items );
}

意识到..

将产品添加到现有订单确实实现了在此之前调用的另一个钩子(因此,当点击“保存”时,上述函数将触发,但订单及其项目在保存之前已设置(添加产品时,订单将立即保存) ). 这意味着$order = new WC_Order( $order_id );之前和之后都会有新的项目,所以无法找到发生了什么变化。)。但是woocommerce_ajax_add_order_item_meta钩子是在“添加产品”时触发的,并在这方面帮助了我。大家编码愉快..

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WooCommerce:在订单中保存对产品的更改时挂钩 的相关文章

  • 如何在php中使用preg添加html属性

    我正在寻找在 php 中编写一个脚本来扫描 html 文档并根据它找到的内容向元素添加新标记 更具体地说 我是扫描文档并为每个元素搜索CSS标记 float right left 如果找到它 它会添加align right left 基于它
  • 将 MySQL 结果作为 PHP 数组

    mysql 表 config name config value allow autologin 1 allow md5 0 当前的 php 代码 sth mysql query SELECT rows array while r mysq
  • 如何在html中制作多行类型的文本框?

  • php下拉菜单人口

    我正在尝试编写一个 php 脚本 该脚本将根据主下拉菜单的选择填充第二个下拉菜单 我想使用 jquery 来完成所有非页面刷新的事情 但我发现现有的所有东西都很难理解和修改 你知道有什么写得很好且易于理解的东西吗 或者可能是现有的教程 下面
  • mysqli bind_param 中的 NULL 是什么类型?

    我正在尝试将参数绑定到 INSERT INTO MySQLi 准备好的语句 如果该变量存在 否则插入 null 然后我知道 type variable i corresponding variable has type integer d
  • PHP cURL 在本地工作,在 AWS 服务器上出现错误 77

    最新更新 脚本作为管理员用户通过 SSH shell 作为 php script php 成功运行 当由 nginx 用户运行时 curl 命令无法执行 https 请求 所以我猜测这是nginx用户无法正确使用curl的问题 我已经检查了
  • 包含包含文件的 php 文件

    这是目录结构 global php includes class bootstrap php includes init php plugins myplugin php 这是这些文件中的代码 start php require inclu
  • 如何将行变成列?

    我有一个数据库 其中存储分组到项目中的关键字以及与每个关键字相关的数据 然后我显示每个项目的数据网格 每个关键字一行和几列 全部从同一个表 数据 中检索 我有 4 个表 关键字 项目 group keywords 和数据 keywords
  • PHP、jQuery 和 Ajax 调用乱序

    我正在使用 jQuery 进行 Ajax 调用 我有 x 数量的 Ajax 调用附加到 div 这些 Ajax 加载请求是由 PHP foreach 循环生成的 问题是它们渲染的顺序不正确 它们被设置在数组中
  • 尝试获取 Google accessToken

    看起来 无论我做什么 谷歌都在竭尽全力阻止我完成这个研究项目 我的项目让我使用 Google 电子表格作为数据库 并使用所述电子表格中的数据执行程序化的 Google 图片搜索 并向最终用户显示一些结果 设置说明 我开始按照此处的说明进行操
  • 如何处理 AJAX 请求中的会话超时

    我相信你们都熟悉使用 AJAX 的投票系统 嗯 看那边 我有类似的东西 当你投票赞成或反对时 它使用 AJAX 从 votes php 请求新值 问题是我正在使用会话来获取用户 ID 因此一个人只能投票一次 如果他们在页面上坐了一个小时然后
  • PHP使用auto_increment生成短唯一ID?

    我想生成一个简短的 唯一的 ID 而不必检查冲突 我目前正在做类似的事情 但是我当前生成的 ID 是随机的 并且在循环中检查冲突很烦人 并且如果记录数量显着增加 将会变得昂贵 通常担心冲突不是问题 但我想要生成的唯一 ID 是一个由 5 8
  • Yii2 中 init() 和 __construct() 方法有什么区别

    init 方法 public function init construct method public function construct 那么 它们之间有什么区别 应该使用哪一个呢 init 是从以下对象扩展的任何对象的方法yii b
  • 删除 woocommerce 店面主页标题 php

    我正在使用 woocommerce 的店面主题 我需要用 php 删除主页标题 h1 我知道 css 解决方案 但我不想使用它 因为我想将 h1 添加到该页面的其他位置 并且在一个页面中包含 2 个 h1 对 seo 不利页 我也知道删除页
  • 重新排列数组键 php [重复]

    这个问题在这里已经有答案了 我有这个数组 Array 15 gt 13 1 16 gt Mark one answer 19 gt You see a car on the hard shoulder of a motorway with
  • UTF-8、PHP、Win7 - 现在是否有解决方案可以使用 php 在 Win 7 上保存 UTF-8 文件名?

    更新 只是为了不让您阅读所有内容 PHP 开头 7 1 0alpha2 在 Windows 上支持 UTF 8 文件名 感谢阿纳托尔 贝尔斯基 根据 stackoverflow 上的一些链接 我找到了部分答案 https stackover
  • 使用 fopen() 包装器创建 ZIP 文件

    如何使用以下命令创建 ZIP 文件fopen 包装器 http es php net manual en wrappers compression php 这显然是not道路
  • 如何确保在 PHP 的“foreach”循环中重置该值?

    我正在写一个简单的 PHP 页面和一些foreach使用了循环 以下是脚本 arrs array a b c foreach arrs as arr if substr arr 0 1 b echo This is b End of fir
  • 显式删除会话cookie会产生什么影响?

    我使用 php session 来维护用户的会话 Session 在登录后创建 在注销或超时后销毁 我需要管理面板中的一个选项来强制注销任何用户 如果他在网站上处于活动状态 我怎样才能做到这一点 我正在考虑删除临时会话文件 这应该有效地破坏
  • 如何使用配置文件 (.ebextensions) 在 AWS Elastic Beanstalk 上安装 PHP IMAP 扩展?

    有谁知道如何使用配置文件 ebextensions 在 AWS Elastic Beanstalk 上安装和启用 PHP IMAP 扩展 我使用的是 64 位 Amazon Linux 2017 03 v2 4 0 运行 PHP 7 0 1

随机推荐

  • 我可以打开一个套接字并将其传递给 Linux 中的另一个进程吗

    在Linux中 我是否可以打开一个套接字并将该套接字传递给另一个进程 如果是 您能告诉我在哪里可以找到示例吗 谢谢 是的 你可以 使用sendmsg 使用 SCM RIGHTS 从一个进程到另一个进程 SCM RIGHTS 发送或接收一组
  • 在 ActionBarSherlock 中使用自定义布局构建 ActionMode

    我刚刚开始使用 ActionBarSherlock 来构建一些简单的应用程序 在我的第一个屏幕中 我有简单的列表 并添加了新的菜单项以将新项目添加到列表中 MenuItem newItem menu add New newItem setI
  • Entity Framework 4.1 - 刷新不是 Context 的成员

    我正在尝试使用 Context Refresh 方法恢复 Context 更改 但 Refresh 似乎不是 Context 的成员 我正在使用 Microsoft ADO NET Entity Framework 4 1 RC 版本 任何
  • C# CPU 和 GPU 温度

    我正在为系统性能创建个人监控程序 但在弄清楚 C 如何检索 CPU 和 GPU 温度信息时遇到问题 我已经让程序通过 PerformanceCounter 检索 CPU 负载和频率信息 以及各种其他信息 但我无法找到 CPU 温度的实例 对
  • python中urllib的响应时间

    我想在使用时获得响应时间urllib 我做了下面的代码 但它超过了响应时间 我可以利用时间吗urllib或者有其他方法吗 import urllib import datetime def main urllist http google
  • java中如何调用抽象类方法

    我想在我自己的类中调用抽象类的方法 抽象类是 public abstract class Call public Connection getEarliestConnection Connection earliest null retur
  • 在 Go 包中哪里放​​置测试的共享代码? [复制]

    这个问题在这里已经有答案了 我有一个包含多个文件的 Go 包 按照 Go 标准 我正在为包中的每个源文件创建一个关联的测试文件 就我而言 不同的测试使用相同的测试帮助功能 我不希望这些函数出现在包源文件中 因为它仅用于测试目的 我还想避免在
  • 编辑文本最大长度并在 texview 中显示长度

    我有一个编辑文本和一个文本视图 我想在编辑文本中设置最大长度 它显示在我的文本视图中 每次用户输入字符时 它都会减去字符数 例如 我将编辑文本的最大长度设置为 150 如果用户输入 150 个字符 他 她就无法再输入了 如何解决这个问题 设
  • 抓取亚马逊时被阻止(即使有标头、代理、延迟)[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我有一个Python代码来抓取亚马逊产品列表 我已经设置了代理和标头 我也有sleep 每次爬行之前 但是 我仍然无法获取数据 我收到的消息是 要讨论自动访问亚马逊数据 请联系
  • 如果两个不同网站上的会话名称相同,会发生什么情况?

    我有两个差异 项目在我的XAMPP说是Project1 and Project2 当我登录时Project1 我检查身份验证 如果成功则存储会话 会话名称是 SESSION username 上述过程与Project2 现在 为了防止直接访
  • ffmpeg退出状态-1094995529

    我正在开发一个应用程序 使打电话给ffprobe返回非正统的退出状态 1094995529对于 Windows 上的某些文件 这个退出状态是一致给出的 并且有一些小的讨论这个的 为什么给出这个值 它记录在哪里 我是否可以期望此状态在允许的退
  • document.getElementByID 外部还是内联?

    我一直在尝试使用document getElementByID从外部 JS 文件中提取 HTML 文件的信息 但它似乎不起作用 是否document getElementByID仅当它与 HTML 文件内联时才有效 或者它可以在外部 JS
  • 如何让 Windows 窗体设计器使用外部程序集中的资源?

    我在资源文件中有一些资源 在本例中为图像 我在 Windows 窗体项目中的控件上使用这些资源 Visual Studio 资源选择对话框没有很好地支持从资源文件中选择图像 除非它们位于特定位置 但您可以直接编辑设计器文件 这工作得很好 应
  • 如何使用 git-bundle 保持开发同步?

    我需要使我的开发树在不同的计算机上保持同步 并且它们之间没有网络连接 我们有一个中央 git 存储库 我通常在我的办公室计算机上使用我自己的克隆 有时我需要在另一台从未连接到办公网络的计算机上进行一些开发 没有一台计算机曾经连接到互联网 可
  • 如何直接更新像素——使用CGImage和直接CGDataProvider

    实际问题 有几个答案可以解决我的问题 我可以强制CGImage从直接数据提供者 使用创建的CGDataProviderCreateDirect like CGContextDrawImage做 或者有其他方法可以设置 self layer
  • 以编程方式在 WPF 中创建网格作为模板

    我想以编程方式创建一个具有样式的基本用户控件 在这种风格中我想添加一个Grid 没问题 但我无法向该网格添加列定义 我的示例代码是 ControlTemplate templ new ControlTemplate FrameworkEle
  • 如何启用 NestJs swagger 4.x 插件

    如何使用新的 swagger 插件 我的编译器选项中有它 compilerOptions plugins nestjs swagger plugin 我正在运行该应用程序nest start如上所述 https docs nestjs co
  • androidx_security_crypto_encrypted_prefs_key_keyset不存在

    我正在尝试使用更安全的方式编辑用户的共享首选项集EncryptedSharedPreferences private fun provideSecureSharedPreference context Context SharedPrefe
  • 如何更改内存地址中存储的值?

    可以说内存地址0A7F03E4存储一个值124 如何将其更改为300使用Python 是否有针对此类任务的模块 gt gt gt import ctypes gt gt gt memfield ctypes c char from addr
  • WooCommerce:在订单中保存对产品的更改时挂钩

    我已经找了好几个小时了 在编辑现有订单中的产品数量后 我无法弄清楚如何在单击 保存 时执行功能 我试过这个 add action woocommerce order edit product your function name funct