我目前正在使用Woocommerce会话来保存用户在购物车页面上输入的信息,这会影响添加到交易中的费用。
订单完成后,我需要能够立即访问此信息,以对用户帐户进行必要的更新。
我认为woocommerce_thankyou
是一个不错的选择,但不幸的是,该会话似乎只有一半时间可用。
在我可以确认购买已完成并且可以获取会话信息的地方,还有更好的挂钩吗?
答案 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()