woocommerce - 无法访问过滤器内的 WooCommerce 订单 ID

标签 woocommerce

有哪些方法可以从 Hook 到 WooCommerce 过滤器(其中回调默认情况下不传递订单 ID)的回调函数中获取当前订单 ID?

满足此条件的 WooCommerce 过滤器的示例 Hook :

add_filter('woocommerce_get_downloadable_file_urls', array('fooClass', 'fooFighter'), 10, 4);

该钩子(Hook)将以下变量传递给回调:

  1. $file_urls
  2. $product_id
  3. $variation_id
  4. $项目

我已经考虑通过将 $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/

相关文章:

php - WooCommerce 电子邮件通知 : different email recipient for different cities

php - 在 WooCommerce 3 中的特定运输方式下方添加一个复选框

php - 删除 woocommerce 简短描述字段

php - Woocommerce单品缩略图src链接替换哪个钩子(Hook)

php - Woocommerce `update_post_meta` 未更新数据库值

php - 即使在 Woocommerce 中使用 ajax 添加到购物车时也可以设置最小输入数量

paypal - WooCommerce:如果购物车总金额 = 0,则更改支付网关

woocommerce - 在 WooCommerce 产品页面中显示自定义 wp_editor 页面的内容

php - WooCommerce 如何删除订单操作 (WordPress)

wordpress - WooCommerce 注册短代码 - 错误消息问题