挂钩 woocommerce_checkout_order_processed 订单项目问题

Dav*_*der 0 php wordpress orders woocommerce hook-woocommerce

我正在开发 WooCommerce 项目。我需要根据自定义表中的订购项目添加一些条目。如果用户订购了 3 个商品,那么这 3 个条目将与我的自定义表中的一些数据一起放置。

为此我使用了woocommerce_checkout_order_processed钩子。但我遇到了一些问题,如果用户在购物车和结账页面添加 4 件商品,如果用户删除了除一件商品之外的所有商品,最后只订购了 1 件商品,那么在这个钩子中我也得到了所有 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);
Run Code Online (Sandbox Code Playgroud)

谢谢 !

Sum*_*hwa 5

do_actiononwoocommerce_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
    }
}
Run Code Online (Sandbox Code Playgroud)