在我的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;
}