挂钩 woocommerce_checkout_order_processed 订单项目问题

Hook woocommerce_checkout_order_processed order items issue

我正在做一个 WooCommerce 项目。我需要在我的自定义 table 中添加一些基于订购商品的条目。如果用户订购了 3 件商品,那么这 3 件商品将与我的自定义 table.

中的一些数据一起放置

为此我使用了 woocommerce_checkout_order_processed 钩子。但是我遇到了一些 问题 ,如果用户在购物车和结帐页面上添加了 4 件商品,如果用户删除了除一件商品以外的所有商品,最后只订购了一件商品,那么我也在这个钩子中得到了所有商品4 项。我没有在此挂钩中获得最终订购的商品。

所以我把钩子改成了woocommerce_thankyou。但在某些情况下,由于某种原因,用户没有出现在感谢页面或某些信用卡付款上,此挂钩 不起作用

所以谁能告诉我最好的钩子可以 运行 在下订单后无论是否付款,而且我应该只得到订购的物品。我的 WooCommerce 版本是 3+

代码:

function wc_function($order_id) {
    global $wpdb;
    $order = new WC_Order($order_id);
    $items = $order->get_items();
    foreach ($items as $item_line_id => $item) {
        // Insert data in my custom table
    }
}
//add_action('woocommerce_checkout_order_processed','wc_function', 10, 3);
//add_action('woocommerce_thankyou', 'wc_function', 10, 1);

谢谢!

do_action on woocommerce_checkout_order_processed 正好传递了三个参数,其中第三个是 $order 本身。所以尝试使用它:

function wc_function($order_id, $posted_data, $order) {
    $items = $order->get_items();
    foreach ($items as $item_line_id => $item) {
        // Insert data in my custom table
    }
}