如何在WooCommerce Checkout中保留用户首选项 - 发送到不同的地址

时间:2016-09-09 09:13:48

标签: php checkbox woocommerce checkout

在WooCommerce购物车中,您可以设置默认设置以发送到帐单邮寄地址。然后,用户可以选中一个框以启用不同的送货地址。对于回头客而言,您必须再次选中此框。我想记住登录用户的复选框的状态,这样不仅显示了地址信息,而且复选框的状态与最后一个订单的状态相同。

1 个答案:

答案 0 :(得分:1)

发布了一些代码段,您可以在其中添加额外字段以进行发货或结算,并让WooCommerce处理存储。其他示例显示自定义字段,其中数据在post中是stort。这是在订单上维护的,但在下一个订单中不可用。

所以我用以下内容回答了我自己的问题。首先在您的子主题的functions.php中执行一个操作,该操作将复选框的状态保存在用户元:

/**
 * Update the user meta with checkbox setting
*/
add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta' );

function my_custom_checkout_field_update_order_meta( $order_id ) {
   $order = new WC_Order( $order_id );
   update_user_meta( $order->user_id , 'shipping_different',$_POST['ship_to_different_address'])   ;
}

然后添加操作以检索存储的复选框值并更新复选框:

/*
 * Get the user meta to set the checkbox if needed
 */

add_action( 'woocommerce_after_checkout_billing_form', 'my_checkout_fields', 10,1 );

function my_checkout_fields( $checkout ) {
    $user_id = get_current_user_id();
    if ($user_id !=0 ) {
        if (get_user_meta($user_id, 'shipping_different', true ) == 1)
        add_filter( 'woocommerce_ship_to_different_address_checked',     '__return_true' );
    }
}

评论?改进?