如何检查woocommerce中是否存在订单号?

时间:2019-08-08 00:27:26

标签: woocommerce

在我的WooCommerce商店中,我有一个输入字段,我希望用户在其中输入订单号。验证此字段时,我需要检查WooCommerce中是否确实存在该订单 number

this question中看来,WooCommerce order_number 可能并不总是与 order_id 相同(它总是与 post_id )。

所以我不能使用 wc_get_order($ the_order)函数,因为the documentation声明要在 $ the_order 中使用 post_id em>参数。

我找不到通过订单号获取订单的特定功能(文档和github中的代码均未提供)。

我是WooCommerce的新手,所以也许我错过了一些东西。有没有办法做到这一点?还是 wc_get_order 记录错误?

我在堆栈溢出时做了很多谷歌搜索和搜索,但是我真的找不到答案!任何帮助表示赞赏。

PS:我想我可以得到所有订单并逐一检查它们是否匹配,但我希望能找到一个更简单的解决方法:D

3 个答案:

答案 0 :(得分:4)

您之所以在文档中找不到任何相关信息,是因为WooCommerce没有订单号的本地概念。 ID是订单号。

但是,商店所有者往往会发现订单ID不会按顺序增加。由于WordPress处理帖子的方式,ID在一个订单和下一个订单之间可能会有很大的跳跃。用户通常会安装一个插件来解决这个问题。正是这些插件介绍了订单ID和它们称为订单号的区别。

这是一个这样的插件的示例:https://en-gb.wordpress.org/plugins/woocommerce-sequential-order-numbers/

文档中包含一个示例,该示例说明如何通过订单号查找订单。如果您安装了这些插件之一,则只需查找相关插件如何将数字解析为ID。

答案 1 :(得分:0)

您可以尝试以下if语句,以查看给定的ID(数字)是否为订单号:

function is_it_a_shop_order($givenNumber)
{   
    if(get_post_type($givenNumber) == "shop_order")
    {
        echo "yes this is a valid order number";
    }
    else
    {
        echo "no go away";
    }
}

Wordpress将所有帖子(页面,订单,产品等)存储在wp_posts表中,订单以名为“ shop_order”的帖子类型存储。

我测试了代码。我希望这能帮到您。祝你有美好的一天。

答案 2 :(得分:0)

通过 wc_get_order 调用发送订单号。如果返回的数组为空,则订单号不存在。

$bOrderExists = DoesOrderExist($OrderNumber);

function DoesOrderExist($OrderNumber)
  {
  $orderq   = wc_get_order($OrderNumber);
  if(empty($orderq))
    return 0;

return 1;
 }