有哪些方法可以从 Hook 到 WooCommerce 过滤器(其中回调默认情况下不传递订单 ID)的回调函数中获取当前订单 ID?
满足此条件的 WooCommerce 过滤器的示例 Hook :
add_filter('woocommerce_get_downloadable_file_urls', array('fooClass', 'fooFighter'), 10, 4);
该钩子(Hook)将以下变量传递给回调:
- $file_urls
- $product_id
- $variation_id
- $项目
我已经考虑通过将 $woocommerce 定义为全局来访问订单 ID。在这种情况下(当 WooCommerce 向客户发送完成的订单电子邮件时),$woocommerce 不包含 WC_Order 对象。
有关更多信息,我正在尝试使用上述 Hook 为特定 WooCommerce 产品创建自定义下载链接。每次在完成的订单电子邮件中列出可下载产品并再次在订单完成页面上列出时,都会调用此过滤器。要创建自定义链接,我需要 order_id。
最佳答案
我知道自从有人问这个问题以来已经有一段时间了,但我今天偶然发现了同样的问题,并通过将以下代码放入我的过滤器函数中来修复它。
global $woocommerce;
$orderId = $woocommerce->woocommerce_email->emails['WC_Email_New_Order']->object->id;
$woocommerce-woocommerce_email->emails 变量仅在发送电子邮件时设置,因此可能还需要添加一些检查。
希望有一天这会对某人有所帮助。 :)
关于woocommerce - 无法访问过滤器内的 WooCommerce 订单 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18430602/