2017-08-29 3 views
3

J'ai un formulaire dans lequel l'utilisateur s'inscrit à un événement, et s'il le souhaite, il peut mettre à jour certaines de ses informations de facturation à la volée.Mise à jour par programmation des informations de facturation du client dans WooCommerce

J'ai une liste des informations qu'ils peuvent mettre à jour, par exemple

$inputs = array(
     'billing_city'   => 'City', 
     'billing_postcode'  => 'Postcode', 
     'billing_email'   => 'Email', 
     'billing_phone'   => 'Phone', 
    ); 

J'ai ensuite essayé d'utiliser la classe WC_Customer de mettre à jour les informations modifiées:

$customer = new WC_Customer(get_current_user_id()); 
foreach ($inputs as $key => $label) { 
    $method = 'set_'. $key; 
    $customer->$method($value); 
} 

Il semblerait tout droit assez. Cependant, les informations de facturation ne sont pas modifiées.

Qu'est-ce que je fais mal? Y a-t-il une autre fonction censée régler ce problème?

La documentation de Woocommerce n'explique pas vraiment beaucoup.

Répondre

2

Vous pouvez le faire en utilisant la fonction update_user_meta(), de cette façon:

$user_id = get_current_user_id(); 

$data = array(
    'billing_city'   => $city_value, 
    'billing_postcode'  => $postcode_value, 
    'billing_email'   => $email_value, 
    'billing_phone'   => $phone_value, 
); 
foreach ($data as $meta_key => $meta_value) { 
    update_user_meta($user_id, $meta_key, $meta_value); 
} 

Vous devrez définir les valeurs dans le tableau.