结帐后是否有Woocommerce会话?

基督教

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

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

我认为woocommerce_thankyou这将是一个很好的选择,但是不幸的是,该会话似乎只有一半时间可用。

在我可以确认购买已完成并且可以获取会话信息的地方,还有更好的选择吗?

LoicTheAztec

您需要将该会话数据另存为自定义订单元数据,以便以后使用(使用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文件中包含代码。经过测试和工作。


然后,要访问数据,将Object使用thWC_Data方法get_meta()WC_Order

$session_data = $order->get_meta('_session_data');

或者也可以使用get_post_meta()已定义顺序ID中的函数

$session_data = get_post_meta( $order_id, '_session_data', true );

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章