我目前正在使用Woocommerce会话来保存用户在购物车页面上输入的信息,这会影响添加到交易中的费用。
我需要在订单完成后立即访问此信息,以便对用户的帐户进行必要的更新。
我认为woocommerce_thankyou
将是一个很好用的钩子,但不幸的是,这个会议似乎只有一半时间可用。
是否有更好的钩子可供我确认购买已完成并且会话信息可用?
您需要将该会话数据保存为自定义订单元数据,以便以后能够使用它(在下面的代码中用正确的会话密钥替换my_key
):
// Add custom order meta data with temporary data from WC_Session
add_action( 'woocommerce_checkout_create_order', 'add_session_data_as_custom_order_meta_data', 10, 2 );
function add_session_data_as_custom_order_meta_data( $order, $data ) {
if ( $session_data = WC()->session->get('my_key') ) {
$order->update_meta_data( '_session_data', $session_data );
}
}
代码在您的活动子主题(或主题)的function.php文件中。经过测试和工作。
然后,要访问数据,您将在qazxsw poi对象上使用qazxsw poi方法qazxsw poi:
WC_Data
或者也可以使用定义顺序的get_meta()
函数Id:
WC_Order