代码之家  ›  专栏  ›  技术社区  ›  Randy Hall

设置帐单和装运信息

  •  0
  • Randy Hall  · 技术社区  · 7 年前

    更新-短版本:


    创建一个严重依赖于自定义restapi端点和ajax的自定义签出页面。我有来自的所有帐单和发货字段 WC()->checkout()->checkout_fields; 从一个调用中返回,将其呈现给用户等等。

    我还通过API调用计算了运费。但是,这只在设置了用户的地址时起作用——这是预期的。


    如何获取发货信息(如果没有发货地址,则无法工作,无法确定如何设置帐单或发货信息)

    function mytheme_get_shipping(){
        foreach( WC()->session->get('shipping_for_package_0')['rates'] as $method_id => $rate ){
            if( WC()->session->get('chosen_shipping_methods')[0] == $method_id ){
                $rate_label = $rate->label; // The shipping method label name
                $rate_cost_excl_tax = floatval($rate->cost); // The cost excluding tax
                // The taxes cost
                $rate_taxes = 0;
                foreach ($rate->taxes as $rate_tax)
                    $rate_taxes += floatval($rate_tax);
                // The cost including tax
                $rate_cost_incl_tax = $rate_cost_excl_tax + $rate_taxes;
    
                return array('label' => $rate_label, 'total' => WC()->cart->get_cart_shipping_total());
            }
        }
    }
    
    1 回复  |  直到 7 年前
        1
  •  9
  •   Outsource WordPress    7 年前

    获取帐单和装运详细信息:

    您可以得到帐单和航运细节如下所示。

    //whole customer details
    print_r(WC()->customer);
    
    //billing details
    $billing = WC()->customer->get_billing(); 
    $billing_first_name = WC()->customer->get_billing_first_name(); 
    $billing_last_name = WC()->customer->get_billing_last_name(); 
    $billing_company = WC()->customer->get_billing_company(); 
    $billing_address = WC()->customer->get_billing_address(); 
    $billing_address_1 = WC()->customer->get_billing_address_1(); 
    $billing_address_2 = WC()->customer->get_billing_address_2(); 
    $billing_city = WC()->customer->get_billing_city(); 
    $billing_state = WC()->customer->get_billing_state(); 
    $billing_postcode = WC()->customer->get_billing_postcode(); 
    $billing_country = WC()->customer->get_billing_country(); 
    
    //shipping details
    $shipping = WC()->customer->get_shipping(); 
    $shipping_first_name = WC()->customer->get_shipping_first_name(); 
    $shipping_last_name = WC()->customer->get_shipping_last_name(); 
    $shipping_company = WC()->customer->get_shipping_company(); 
    $shipping_address = WC()->customer->get_shipping_address(); 
    $shipping_address_1 = WC()->customer->get_shipping_address_1(); 
    $shipping_address_2 = WC()->customer->get_shipping_address_2(); 
    $shipping_city = WC()->customer->get_shipping_city(); 
    $shipping_state = WC()->customer->get_shipping_state(); 
    $shipping_postcode = WC()->customer->get_shipping_postcode(); 
    $shipping_country = WC()->customer->get_shipping_country(); 
    

    您可以按如下所示设置帐单和装运详细信息。

    //billing details
    $billing_first_name = $_POST['billing_first_name'];
    $billing_last_name = $_POST['billing_last_name'];
    $billing_company = $_POST['billing_company'];
    $billing_address_1 = $_POST['billing_address_1'];
    $billing_address_2 = $_POST['billing_address_2'];
    $billing_city = $_POST['billing_city'];
    $billing_state = $_POST['billing_state'];
    $billing_postcode = $_POST['billing_postcode'];
    $billing_country = $_POST['billing_country'];
    
    WC()->customer->set_billing_first_name(wc_clean( $billing_first_name )); 
    WC()->customer->set_billing_last_name(wc_clean( $billing_last_name )); 
    WC()->customer->set_billing_company(wc_clean( $billing_company ));  
    WC()->customer->set_billing_address_1(wc_clean( $billing_address_1 )); 
    WC()->customer->set_billing_address_2(wc_clean( $billing_address_2 )); 
    WC()->customer->set_billing_city(wc_clean( $billing_city )); 
    WC()->customer->set_billing_state(wc_clean( $billing_state )); 
    WC()->customer->set_billing_postcode(wc_clean( $billing_postcode )); 
    WC()->customer->set_billing_country(wc_clean( $billing_country )); 
    
    //shipping details
    $shipping_first_name = $_POST['shipping_first_name'];
    $shipping_last_name = $_POST['shipping_last_name'];
    $shipping_company = $_POST['shipping_company'];
    $shipping_address_1 = $_POST['shipping_address_1'];
    $shipping_address_2 = $_POST['shipping_address_2'];
    $shipping_city = $_POST['shipping_city'];
    $shipping_state = $_POST['shipping_state'];
    $shipping_postcode = $_POST['shipping_postcode'];
    $shipping_country = $_POST['shipping_country'];
    
    WC()->customer->set_shipping_first_name(wc_clean( $shipping_first_name )); 
    WC()->customer->set_shipping_last_name(wc_clean( $shipping_last_name )); 
    WC()->customer->set_shipping_company(wc_clean( $shipping_company ));    
    WC()->customer->set_shipping_address_1(wc_clean( $shipping_address_1 )); 
    WC()->customer->set_shipping_address_2(wc_clean( $shipping_address_2 )); 
    WC()->customer->set_shipping_city(wc_clean( $shipping_city )); 
    WC()->customer->set_shipping_state(wc_clean( $shipping_state )); 
    WC()->customer->set_shipping_postcode(wc_clean( $shipping_postcode )); 
    WC()->customer->set_shipping_country(wc_clean( $shipping_country )); 
    

    创建新客户并设置帐单和装运详细信息:

    您可以创建新客户,设置帐单和发货详细信息,如下所示。

    //create new customer
    $email = $_POST['email'];
    $username = $_POST['username'];
    $password = $_POST['password'];
    
    $user_id = wc_create_new_customer( $email, $username, $password );
    
    //billing details
    $billing_first_name = $_POST['billing_first_name'];
    $billing_last_name = $_POST['billing_last_name'];
    $billing_company = $_POST['billing_company'];
    $billing_address_1 = $_POST['billing_address_1'];
    $billing_address_2 = $_POST['billing_address_2'];
    $billing_city = $_POST['billing_city'];
    $billing_state = $_POST['billing_state'];
    $billing_postcode = $_POST['billing_postcode'];
    $billing_country = $_POST['billing_country'];
    
    update_user_meta( $user_id, "billing_first_name", $billing_first_name );
    update_user_meta( $user_id, "billing_last_name", $billing_last_name );
    update_user_meta( $user_id, "billing_company", $billing_company );
    update_user_meta( $user_id, "billing_address_1", $billing_address_1 );
    update_user_meta( $user_id, "billing_address_2", $billing_address_2 );
    update_user_meta( $user_id, "billing_city", $billing_city );
    update_user_meta( $user_id, "billing_state", $billing_state );
    update_user_meta( $user_id, "billing_postcode", $billing_postcode );
    update_user_meta( $user_id, "billing_country", $billing_country );
    
    //shipping details
    $shipping_first_name = $_POST['shipping_first_name'];
    $shipping_last_name = $_POST['shipping_last_name'];
    $shipping_company = $_POST['shipping_company'];
    $shipping_address_1 = $_POST['shipping_address_1'];
    $shipping_address_2 = $_POST['shipping_address_2'];
    $shipping_city = $_POST['shipping_city'];
    $shipping_state = $_POST['shipping_state'];
    $shipping_postcode = $_POST['shipping_postcode'];
    $shipping_country = $_POST['shipping_country'];
    
    update_user_meta( $user_id, "shipping_first_name", $shipping_first_name );
    update_user_meta( $user_id, "shipping_last_name", $shipping_last_name );
    update_user_meta( $user_id, "shipping_company", $shipping_company );
    update_user_meta( $user_id, "shipping_address_1", $shipping_address_1 );
    update_user_meta( $user_id, "shipping_address_2", $shipping_address_2 );
    update_user_meta( $user_id, "shipping_city", $shipping_city );
    update_user_meta( $user_id, "shipping_state", $shipping_state );
    update_user_meta( $user_id, "shipping_postcode", $shipping_postcode );
    update_user_meta( $user_id, "shipping_country", $shipping_country );