【问题标题】:Trouble accessing WooCommerce order ID within filter在过滤器中访问 WooCommerce 订单 ID 时遇到问题
【发布时间】:2013-08-28 03:27:58
【问题描述】:

有哪些方法可以从与 WooCommerce 过滤器挂钩的回调函数中获取当前订单 ID,其中回调默认情况下不传递订单 ID

符合此条件的 WooCommerce 过滤器的示例挂钩:

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

这个钩子将以下变量传递给回调:

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

我已经研究过通过 $woocommerce 将其定义为全局来访问订单 ID。在这种情况下(当 WooCommerce 向客户发送完成的订单电子邮件时),$woocommerce 不包含 WC_Order 对象。

有关其他信息,我正在尝试使用上述挂钩为特定的 WooCommerce 产品创建自定义下载链接。每次在已完成的订单电子邮件中列出可下载产品时调用此过滤器,并在订单完成页面上再次列出)。要创建自定义链接,我需要 order_id。

【问题讨论】:

    标签: woocommerce


    【解决方案1】:

    我知道这个问题已经有一段时间了,但我今天偶然发现了同样的问题,并通过将以下代码放入我的过滤器函数中来解决它。

    global $woocommerce;
    $orderId = $woocommerce->woocommerce_email->emails['WC_Email_New_Order']->object->id;
    

    $woocommerce-woocommerce_email->emails 变量仅在发送电子邮件时设置,因此可能还需要添加一些检查。

    希望有一天这对某人有所帮助。 :)

    【讨论】:

      【解决方案2】:

      我也知道这已经很老了,但只是想指出,对于 WooCommerce 2.2,get_downloadable_file_urls() 方法已被弃用,取而代之的是 get_item_downloads()。这意味着合适的过滤器现在将是woocommerce_get_item_downloads

      return apply_filters( 'woocommerce_get_item_downloads', $files, $item, $this );
      

      第三个参数是$this,因为get_item_downloads()WC_Abstract_Order 抽象(负责WC_Order)中的一个方法,最终意味着它是$order 对象,而$order->id 将是ID。

      【讨论】:

        猜你喜欢
        • 2021-08-18
        • 2020-08-21
        • 1970-01-01
        • 1970-01-01
        • 2020-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-27
        相关资源
        最近更新 更多