【问题标题】:How can I get the order ID in WooCommerce?如何在 WooCommerce 中获取订单 ID?
【发布时间】:2014-03-05 04:22:00
【问题描述】:

如何在 WooCommerce 中检索订单 ID?

【问题讨论】:

  • 澄清一下:order id 等于 post id,在 Wordpress 标准表中可以找到。 order number 是代表 WooCommerce 订单的代码,如 WC 表中所示。

标签: wordpress woocommerce


【解决方案1】:

当前方法:

目前的实现方式是使用这个函数:

$order->get_id();

这应该返回不带“#”的订单ID。

旧方法:

在旧版本的 WooCommerce 中,您可能需要将其作为属性来访问:

echo $order->id;

【讨论】:

  • 这将返回订单发布的 ID,而不是订单的 ID。 $order->get_order_number();是正确的答案。
  • 当您在 Google 上搜索类似内容时,这是第一篇文章。 $order->id 不再受支持,您将收到错误消息(成员具有受保护的访问权限)。但是如果你想获得 ID(不是订单号),你可以这样做:$order->get_id();
  • 这在当前版本的 Woocommerce 中不起作用,您应该使用 $order->get_id();就像 emilushi 说的那样。
  • 我的答案是 3 年半前的答案,截至目前,答案是 4 岁。希望 woocommerce 不断发展,事情发生了变化 :)。刚刚编辑了我的答案以反映当前的解决方案。感谢您指出目前的做法。
  • 你在哪里定义$order??
【解决方案2】:

成功了。刚刚修改了

global $woocommerce, $post;

$order = new WC_Order($post->ID);

//to escape # from order id 

$order_id = trim(str_replace('#', '', $order->get_order_number()));

【讨论】:

  • 我刚试过 - $order->get_order_number() 它只返回 id (没有任何 # )。我不需要替换那个#。可能最新的 woocommerce 更新删除了 #.谁能确认一下?
  • 是的,我可以确认 $order->get_order_number() 至少从 Woocommerce 2.4 版(包括 3.0 及更高版本)起只返回 id(没有“#”字符)。它可以被带有 wordpress 过滤器的插件覆盖,woocommerce_order_number 所以最好假设它仅用于显示并且可能不是数字。谢谢!
  • 是否可以使用 $order 对象获取订购的产品库存信息?
【解决方案3】:

我没有测试它,不知道你是否需要它,但是:

$order = new WC_Order(post->ID);
echo $order->get_order_number();

让我知道它是否有效。 我相信订单号与“#”相呼应,但如果只需要数字,您可以将其拆分。

【讨论】:

  • 我之前做过这个,它不起作用,问题是WC_Order中必须有参数,我想我必须删除cookie然后手动减少库存。
  • (post->ID) 它会给什么?
【解决方案4】:

从 woocommerce 3.0 开始

$order->id;

不行,会产生通知,使用getter函数:

$order->get_id();

这同样适用于 procut 等其他 woocommerce 对象。

【讨论】:

    【解决方案5】:
    $order = new WC_Order( $post_id ); 
    

    如果你

    echo $order->id;
    

    然后,您将获得发出订单的帖子的 ID。因为你已经得到了,它可能不是你想要的。

    echo $order->get_order_number();
    

    将返回订单的ID(前面有一个#)。为了摆脱#,

    echo trim( str_replace( '#', '', $order->get_order_number() ) );
    

    根据接受的答案。

    【讨论】:

      【解决方案6】:

      正如 LoicTheAztec 在这里提到的:https://stackoverflow.com/a/67182262/4638682

      您可以在多个模板中通过多种方式获得此信息。像这样:

      $order_id = absint( get_query_var('view-order') );
      

      【讨论】:

        猜你喜欢
        • 2019-09-08
        • 2020-05-08
        • 2018-03-23
        • 2021-07-14
        • 1970-01-01
        • 2017-07-08
        • 1970-01-01
        • 2017-10-27
        • 2014-09-30
        相关资源
        最近更新 更多