有时不调用函数woocommerce_thankyou,但有时工作正常。
我们的代码是:
add_action(‘woocommerce_thankyou’, ‘send_order_information_for_delivery’, 999, 1);
function send_order_information_for_delivery($order_id)
{
$order = wc_get_order($order_id);
$order_items = $order->get_items();
// … …
}
知道为什么有时不起作用吗?
此方法的主要目的是获取采购订单及其物料的信息,并通过API将它们发送到另一个数据库。
奇怪的是,在某些顺序中没有调用该方法。
相反,您可以尝试使用以下挂钩函数,该函数在处理交货数据后仅适用于定义的订单状态一次。
add_action( 'woocommerce_order_status_changed', 'delivery_information_process', 20, 4 );
function delivery_information_process( $order_id, $old_status, $new_status, $order ){
// Define the order statuses to check
$statuses_to_check = array( 'on-hold', 'processing' );
// Only "On hold" order status and "Free Shipping" Shipping Method
if ( $order->get_meta( '_delivery_check', true ) && in_array( $new_status, $statuses_to_check ) )
{
// Getting all WC_emails objects
foreach($order->get_items() as $item_id => $item ){
$product = $item->get_product();
$sku = $product->get_sku();
}
## ==> Process delivery data step
// Once delivery information is send or processed ==> update '_delivery_check' to avoid repetitions
$order->update_meta_data( '_delivery_check', true );
}
}
代码进入函数.php活动子主题(或活动主题(的文件。经过测试并工作。