结账后可用Woocommerce会话?

问题描述 投票:1回答:1

我目前正在使用Woocommerce会话来保存用户在购物车页面上输入的信息,这会影响添加到交易中的费用。

我需要在订单完成后立即访问此信息,以便对用户的帐户进行必要的更新。

我认为woocommerce_thankyou将是一个很好用的钩子,但不幸的是,这个会议似乎只有一半时间可用。

是否有更好的钩子可供我确认购买已完成并且会话信息可用?

php wordpress session woocommerce orders
1个回答
0
投票

您需要将该会话数据保存为自定义订单元数据,以便以后能够使用它(在下面的代码中用正确的会话密钥替换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
© www.soinside.com 2019 - 2024. All rights reserved.