我想在csv文件中写入产品库存价值可能发生的任何变化。这包括订单的库存减少。

我已经编写了以下代码,当在管理页面中手动更改库存时,或者当订单被标记为取消或终止时,这些代码可以完美地工作,但当下了新订单时,它不起作用。

为什么是这样?我如何更改代码,以便在下订单时触发代码?

代码为:

add_action( 'woocommerce_product_set_stock', 'save_stock',1  );
function save_stock( $product ) {
    $sku = $product->get_sku();
    $qty = $product->get_stock_quantity();
    $file_pathname = '~/stock_v1_log.csv';
    $file = fopen($file_pathname, 'a');
    $data = array("WEB", $sku, $qty);
    fputcsv($file, $data);
    fclose($file);
}

add_action( 'woocommerce_reduce_order_stock', 'update_in_custom_table', 10, 1 );
add_action( 'woocommerce_restore_order_stock', 'update_in_custom_table', 10, 1 );
add_action( 'woocommerce_checkout_order_processed', 'update_in_custom_table', 10, 1 );
function update_in_custom_table( $order ){
    $order_id = $order->get_id();
    $order = wc_get_order( $order_id );
    foreach ( $order->get_items() as $item ) {
        if ( ! $item->is_type( 'line_item' ) ) {
            continue;
        }
        $product = $item->get_product();
    $sku = $product->get_sku();
    $qty = $product->get_stock_quantity();
    $file_pathname = '~/stock_v1_log.csv';
    $file = fopen($file_pathname, 'a');
    $data = array("WEB", $sku, $qty);
    fputcsv($file, $data);
    fclose($file);
    }
}   

下单时无法触发操作的更多相关文章

  1. android – 移动应用程序的WooCommerce API

    我打算为WooCommerce商店开发原生移动Android应用程序.我在这里查看了他们的RESTapi文档:http://docs.woocommercev2.apiary.io/我已经开始测试了,但是当我做不同的电话时GET/order让我们说它会返回商店的所有订单.有谁知道如何使用他们的API开发最终用户应用程序.例如:PUT/order(为登录用户创建订单)GET/order(获取登录用户

  2. 如何在woocommerce中的产品数据选项卡中添加自定义选项卡,然后将输入保存在数据库中并显示在订单详细信息页面上

    实例我尝试了这段代码来创建自定义选项卡和输入,现在我正在寻找如何在订单详细信息页面上保存和显示输入文本。我想在新的自定义选项卡中添加文本,并在订单详情页中显示该文本

  3. 下单时无法触发操作

    我想在csv文件中写入产品库存价值可能发生的任何变化。我已经编写了以下代码,当在管理页面中手动更改库存时,或者当订单被标记为取消或终止时,这些代码可以完美地工作,但当下了新订单时,它不起作用。我如何更改代码,以便在下订单时触发代码?

  4. 执行'更新后'重力后期创建后的动作?

    我正在使用GravityForms插件“高级后期创作”在市场上制作woocommerce产品。所制作的产品在创建时不会显示在用户的仪表板中,而是在管理员后端的“产品”列表中以及站点本身中可见。当我检查产品元时,只有少数是由重力形式制成的。只需点击产品上的更新,似乎会触发与GF使用的过程不同的过程,突然有更多的数据应用到产品上,并且在用户的仪表板中可见。因此,我在函数文件中使用了一段代码来尝试运行更新后函数,但它似乎不起作用。

  5. 如何只对woocommerce产品进行星级评定,而不需要评论

    我正在寻找代码,使我能够收集WooCommerce产品的明星评论,而无需用户提供任何评论。下面的这段代码通过消除评论框让我走了那么远,但WordPress不允许保存提交内容。

  6. php – WooCommerce – 显示价格包含产品页面的税

    我正在使用WooCommerceforwordpress.我列出的项目不包括增值税.我需要在产品页面上单独显示价格,增值税和增值税(如结帐页面).我找不到这样做的插件.我怎样才能做到这一点?WooCommercev3.0.0及更高版本从WooCommerce3.0版开始,不推荐使用函数woocommerce_price(),方法get_price_including_tax()也是如此.您应该使用

  7. php – 在WordPress上将类别描述移到页面底部

    我真的需要帮助将类别描述移动到分页和页脚之间的类别页面的底部?我完全不知道要查找哪个文件…

  8. php – 输出与标签相关的帖子

    我正在使用wordpress3.9和WooCommerce2.1.8,并想知道如何显示用户当前正在查看的四行相关帖子的单行,这与帖子的标签或标签相关,而不是类别在…

  9. php – 在woocommerce中注册并重定向到登录页面时阻止自动登录?

    action=register经过大量的搜索,我找到了解决方案第1步:添加WPApproveUser第二步:将这些代码添加到你的主题功能文件中

  10. php – 如何在woocommerce中为购物车创建自定义折扣

    我在WooCommerce中创建了一个插件,并且在向CART/CHECKOUT页面添加自定义折扣时遇到了一个小问题.如何在不创建优惠券的情况下将自定义折扣应用于购物车?假设我想在购物车页面上给予5美元的折扣.我怎样才能做到这一点?

随机推荐

  1. 如何扩展ATmega324PB微控制器的以下宏寄存器?

    我目前正在学习嵌入式,我有以下练习:展开以下宏寄存器:如果有人解决了这个问题,我将不胜感激,以便将来参考

  2. Python将ONNX运行时设置为返回张量而不是numpy数组

    在python中,我正在加载预定义的模型:然后我加载一些数据并运行它:到目前为止,它仍在正常工作,但我希望它默认返回Tensor列表,而不是numpy数组。我对ONNX和PyTorch都是新手,我觉得这是我在这里缺少的基本内容。这将使转换中的一些开销相同。

  3. 在macOS上的终端中使用Shell查找文件中的单词

    我有一个文本文件,其中有一行:我需要找到ID并将其提取到变量中。我想出了一个RexEx模式:但它似乎对我尝试过的任何东西都不起作用:grep、sed——不管怎样。我的一个尝试是:我为这样一个看似愚蠢的问题感到抱歉,但我在互联网上找不到任何东西:我在SO和SE上读了几十个类似的问题,并在谷歌上搜索了几个教程,但仍然无法找到答案。欢迎提供任何指导!

  4. react-chartjs-2甜甜圈图中只有标题未更新

    我正在使用react-chartjs-2在我的网站中实现甜甜圈图。下面是我用来呈现图表的代码。我将甜甜圈图的详细信息从父组件传递到子组件,所有道具都正确传递。当我在beforeDraw函数外部记录props.title时,它会记录正确的值,但当我在beforeDraw函数内部记录props.title时,它将记录标题的前一个值,从而呈现标题的前值。我在这里做错了什么?

  5. 如何在tkinter中使用Python生成器函数?

    生成器函数承诺使某些代码更易于编写。但我并不总是知道如何使用它们。假设我有一个斐波那契生成器函数fib(),我想要一个显示第一个结果的tkinter应用程序。当我点击“下一步”按钮时,它会显示第二个数字,依此类推。我如何构建应用程序来实现这一点?我可能需要在线程中运行生成器。但如何将其连接回GUI?

  6. 如何为每次提交将存储库历史记录拆分为一行?

    我正在尝试获取存储库的历史记录,但结果仅以单行文本的形式返回给我。

  7. 尝试在颤振项目上初始化Firebase时出错

    当尝试在我的颤振项目上初始化firebase时,我收到了这个错误有人知道我能做什么吗?应用程序分级Gradle插件Gradle项目颤振相关性我已经将firebase设置为Google文档已经在另一个模拟器上尝试过,已经尝试过创建一个全新的模拟器,已经在不同的设备上尝试过了,已经尝试了特定版本的firebase,已经尝试添加但没有任何效果,已经在youtube上看到了关于它的每一个视频,该应用程序在android和iOS两个平台上都抛出了这个错误

  8. 在unix中基于当前日期添加新列

    我试图在unix中基于时间戳列在最后一个单元格中添加一个状态列。我不确定如何继续。

  9. 麦克斯·蒙特利。我一直得到UncaughtReferenceError:当我在终端中写入node-v时,节点未定义

    如果这是您应该知道的,请确认:我已将所有shell更改为默认为zsh。当我在终端中写入node-v时,我一直收到“UncaughtReferenceError:nodeisnotdefined”。但它显示节点已安装。我是个新手,在这方面经验不足。

  10. 如何在前端单击按钮时调用后端中的函数?

    那么如何在后端添加一个新的端点,点击按钮调用这个函数。

返回
顶部