结帐后是否有Woocommerce会话?

时间:2019-03-19 16:27:32

标签: php wordpress session woocommerce orders

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

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

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

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

1 个答案:

答案 0 :(得分:0)

您需要将该会话数据另存为自定义订单元数据,以便以后使用(用正确的会话密钥替换下面代码中的<div> <button ng-click="$ctrl.openDdl()" class="sans-serif col-12 field field-sm select border-blue"> {{$ctrl.selectedCrime.crime}}</button> <div ng-show="$ctrl.ddlOpen" ng-repeat="g in $ctrl.groups"> <button ng-click="$ctrl.openGroups(g.id)" class="sans-serif col-12 field select field-sm border-blue"> {{g.text}}</button> <div ng-show="{{g.id}} == $ctrl.groupName">stuff</div> </div> </div>):

my_key

代码在活动子主题(或主题)的function.php文件中。经过测试,可以正常工作。


然后使用// 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_Data方法get_meta()来访问数据:

WC_Order

或者也可以通过已定义的订单ID 使用$session_data = $order->get_meta('_session_data'); 函数:

get_post_meta()