我正在从事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);
谢谢!
答案 0 :(得分:2)
do_action
上的 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
}
}