结帐后的WooCommerce会话的可用性



我目前正在使用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 );
    }
}

代码在您的活动子主题(或主题)的功能上启用函数。测试并起作用。


然后,要访问数据,您将在WC_Order对象上使用WC_Data方法get_meta()

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

或使用定义的订单ID get_post_meta()函数:

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

相关内容

  • 没有找到相关文章

最新更新