【发布时间】:2014-03-05 04:22:00
【问题描述】:
如何在 WooCommerce 中检索订单 ID?
【问题讨论】:
-
澄清一下:
order id等于post id,在 Wordpress 标准表中可以找到。order number是代表 WooCommerce 订单的代码,如 WC 表中所示。
标签: wordpress woocommerce
如何在 WooCommerce 中检索订单 ID?
【问题讨论】:
order id 等于 post id,在 Wordpress 标准表中可以找到。 order number 是代表 WooCommerce 订单的代码,如 WC 表中所示。
标签: wordpress woocommerce
目前的实现方式是使用这个函数:
$order->get_id();
这应该返回不带“#”的订单ID。
在旧版本的 WooCommerce 中,您可能需要将其作为属性来访问:
echo $order->id;
【讨论】:
$order->id 不再受支持,您将收到错误消息(成员具有受保护的访问权限)。但是如果你想获得 ID(不是订单号),你可以这样做:$order->get_id();
成功了。刚刚修改了
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 = new WC_Order(post->ID);
echo $order->get_order_number();
让我知道它是否有效。 我相信订单号与“#”相呼应,但如果只需要数字,您可以将其拆分。
【讨论】:
从 woocommerce 3.0 开始
$order->id;
不行,会产生通知,使用getter函数:
$order->get_id();
这同样适用于 procut 等其他 woocommerce 对象。
【讨论】:
$order = new WC_Order( $post_id );
如果你
echo $order->id;
然后,您将获得发出订单的帖子的 ID。因为你已经得到了,它可能不是你想要的。
echo $order->get_order_number();
将返回订单的ID(前面有一个#)。为了摆脱#,
echo trim( str_replace( '#', '', $order->get_order_number() ) );
根据接受的答案。
【讨论】:
正如 LoicTheAztec 在这里提到的:https://stackoverflow.com/a/67182262/4638682
您可以在多个模板中通过多种方式获得此信息。像这样:
$order_id = absint( get_query_var('view-order') );
【讨论】: