gpt4 book ai didi

php - 以编程方式创建 WooCommerce 订单时设置外部订单 ID

转载 作者:行者123 更新时间:2023-12-04 08:33:54 31 4
gpt4 key购买 nike

我一直在使用一些有据可查的代码以编程方式创建 Woocommerce 订单。工作得很好。此处引用:https://quadlayers.com/add-products-woocommerce/

但是我很想知道是否可以在通过脚本创建我的 WC 订单时定义 order_id(或者是 post_id?)。我在我的商店上运行此代码,该商店目前从在线市场将订单导入 Woocommerce,其中订单已经有一个订单号,我很想通过这个 hack 删除交叉引用,并将现有的订单号传递给厕所。

这是我所拥有的粗略想法;

$insert_marketplace_order_id = 1234567890;

$order = wc_create_order();
$order->set_order_id($insert_marketplace_order_id);
$order->set_date_created($date_here);
$order-> etc. etc.
$order->save();

我显然四处搜索,不幸的是,一个插件的存在 - 这似乎是谷歌所知道的一切 - 没有帮助。

虽然“set_order_id”可以解决问题,但我可能会把它放在哪里。还有其他想法吗?

最佳答案

在 WooCommerce 中,订单 ID 是帖子 ID,因此您无法像您尝试的那样插入外部引用 ID。 WooCommerce 订单是自定义帖子类型,订单 ID(帖子 ID)是根据 wp_posts 数据库表中使用的最后一个帖子 ID 生成的......

现在您可以使用 the filter hook woocommerce_order_number 设置订单号,以将您自己的订单引用号设置为订单号,这不是 WooCommerce 订单 ID (帖子 ID)

所以你的代码将是:

$insert_marketplace_order_id = 1234567890;

$order = new WC_Order();
$order->set_date_created($date_here);

// $order-> etc. etc.

$order->update_meta_data('_order_number', $insert_marketplace_order_id); // <== Here
$order->save();

然后您将添加以下 Hook 函数以获取并显示正确的订单号:

add_filter( 'woocommerce_order_number', 'wc_set_order_number', 10, 2 );
function wc_set_order_number( $order_id, $order ) {

// Get the order number (custom meta data)
$order_number = $order->get_meta('_order_number');

return empty($order_number) ? $order_id : $order_number;
}

代码进入事件子主题(或事件主题)的 functions.php 文件。

Now when using the WC_Order method get_order_number() WooCommerce will get/display the correct order number.

注意:因为您不使用 wc_create_order() function 的任何参数,所以最好使用 $order = new WC_Order(); 代替,它会给出一个空的 WC_Order 实例对象,无需使用 save() 方法 2 次(轻得多)

相关: Dynamic custom order numbers based on payment method

关于php - 以编程方式创建 WooCommerce 订单时设置外部订单 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64897740/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com