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



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

从这个问题来看,似乎WooCommerceorder_number可能并不总是与order_id相同(总是与post_id相同(。

所以我不能使用 wc_get_order($the_order( 函数,因为文档指出它希望在$the_order参数中post_id

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

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

我已经在堆栈溢出上做了很多谷歌搜索和搜索,但我真的找不到答案!任何帮助,不胜感激。

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

您可以尝试以下 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"的帖子类型存储。

我测试了代码。我希望这对你有帮助。祝你今天开心。

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

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

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

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

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

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

最新更新