挂钩 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
}
}
我正在做一个 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
}
}