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

Mai*_*Bay 0 woocommerce

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

这个问题来看,似乎 WooCommerce order_number可能并不总是与order_id相同(它总是与post_id相同)。

所以我不能使用wc_get_order($ the_order) ,因为函数的文档说,它希望POST_ID$ the_order参数。

我找不到通过订单号获取订单的特定函数(无论是在文档中还是在 github 中的代码中)。

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

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

PS:我想我可以得到所有订单并逐个循环检查数字是否匹配,但我希望找到一个更简单的解决方案:D

Nat*_*son 5

您在文档中难以找到有关此内容的任何内容的原因是 WooCommerce 没有订单号的原生概念。ID就是订单号。

然而,店主往往会发现订单 ID 不会按顺序增加。由于 WordPress 处理帖子的方式,一个订单和下一个订单之间的 ID 可能会有很大的跳跃。用户通常会安装一个插件来解决这个问题。这些插件引入了订单 ID 和订单号之间的区别。

以下是此类插件的示例:https ://en-gb.wordpress.org/plugins/woocommerce-sequential-order-numbers/

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


小智 5

您可以尝试使用 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";
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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