【问题标题】:How do I retain the user preference in WooCommerce Checkout - Ship to different address如何在 WooCommerce Checkout 中保留用户偏好 - 运送到不同的地址
【发布时间】:2016-09-09 09:13:47
【问题描述】:

在 WooCommerce 购物车中,您可以将默认设置为运送到帐单地址。然后,用户可以选中一个框以启用不同的送货地址。对于回头客来说,您必须再次选中该框是一件令人讨厌的事情。我想记住登录用户的复选框的状态,这样不仅显示地址信息,而且复选框的状态与上次订单的状态相同。

【问题讨论】:

    标签: php checkbox woocommerce checkout


    【解决方案1】:

    发布了 sn-ps,您可以在其中向运输或计费添加额外字段,并让 WooCommerce 处理存储。其他示例显示了数据存储在 post 中的自定义字段。这在订单中保留,但在下一个订单中不可用。

    所以我用以下内容回答了我自己的问题。首先在你的子主题的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' );
        }
    }
    

    评论?改进?

    【讨论】:

      猜你喜欢
      • 2019-09-24
      • 1970-01-01
      • 2018-03-17
      • 1970-01-01
      • 2018-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多