小智 31

这是一个相当古老的问题,但有人可能会来这里寻找答案:

echo $order->id;
Run Code Online (Sandbox Code Playgroud)

这应该返回没有"#"的订单ID.

编辑(2月/ 2月)

目前实现这一目标的方法是:

$order->get_id();
Run Code Online (Sandbox Code Playgroud)

  • 这将返回订单发布的ID,而不是订单的ID.$命令 - > get_order_number(); 是正确的答案. (3认同)
  • 当您在Google上搜索类似的内容时,这是第一篇文章.不再支持`$ order-> id`,您将收到错误(会员有受保护的访问权限).但是如果你想得到ID(不是订单号)你可以用:`$ order-> get_id();` (2认同)

Dip*_*Dip 26

有效.刚刚修改过它

global $woocommerce, $post;

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

//to escape # from order id 

$order_id = trim(str_replace('#', '', $order->get_order_number()));
Run Code Online (Sandbox Code Playgroud)

  • 我刚刚尝试过 - `$order->get_order_number()` 并且它只返回了 id (没有任何 # )。我不需要替换那个#。可能最新的 woocommerce 更新删除了#。有人可以确认吗? (2认同)
  • 是的,我可以确认 `$order->get_order_number()` 只返回 id(没有“#”字符),因为至少是 Woocommerce 2.4 版(直到并包括 3.0 及更高版本)。它可以被带有 wordpress 过滤器“woocommerce_order_number”的插件覆盖,因此最好假设它仅用于显示,可能不是数字。谢谢! (2认同)

小智 11

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

$order = new WC_Order(post->ID);
echo $order->get_order_number();
Run Code Online (Sandbox Code Playgroud)

如果有效,请告诉我.我认为订单号与"#"相呼应,但如果只需要数字,你就可以分开.


pie*_*rsb 6

$order = new WC_Order( $post_id ); 
Run Code Online (Sandbox Code Playgroud)

如果你

echo $order->id;
Run Code Online (Sandbox Code Playgroud)

然后您将返回发出订单的帖子的 ID。既然你已经得到了,这可能不是你想要的。

echo $order->get_order_number();
Run Code Online (Sandbox Code Playgroud)

将返回订单的 id(前面有#)。要摆脱#,

echo trim( str_replace( '#', '', $order->get_order_number() ) );
Run Code Online (Sandbox Code Playgroud)

根据已接受的答案。


小智 6

从 woocommerce 3.0 开始

$order->id;
Run Code Online (Sandbox Code Playgroud)

不起作用,它会生成通知,使用 getter 函数:

$order->get_id();
Run Code Online (Sandbox Code Playgroud)

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