在 WooCommerce 中以编程方式更新客户的账单信息
Updating programmatically customer's billing information in WooCommerce
我有一个用户注册活动的表单,如果他们愿意,他们可以即时更新他们的一些账单信息。
我有一个他们可以更新的信息列表,例如
$inputs = array(
'billing_city' => 'City',
'billing_postcode' => 'Postcode',
'billing_email' => 'Email',
'billing_phone' => 'Phone',
);
然后我尝试使用 WC_Customer
class 来更新更改的信息:
$customer = new WC_Customer( get_current_user_id() );
foreach ($inputs as $key => $label ) {
$method = 'set_'. $key;
$customer->$method( $value );
}
这看起来很直接。但是,帐单信息不会更改。
我做错了什么?是否有其他功能可以解决此问题?
Woocommerce 文档并没有真正解释太多。
您可以使用 update_user_meta()
函数来完成,这样:
$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 );
}
您需要在数组中设置值。
您必须在设置属性后保存更改。在您的代码中,在 foreach 之后添加:
$customer->save();
瞧!
我有一个用户注册活动的表单,如果他们愿意,他们可以即时更新他们的一些账单信息。
我有一个他们可以更新的信息列表,例如
$inputs = array(
'billing_city' => 'City',
'billing_postcode' => 'Postcode',
'billing_email' => 'Email',
'billing_phone' => 'Phone',
);
然后我尝试使用 WC_Customer
class 来更新更改的信息:
$customer = new WC_Customer( get_current_user_id() );
foreach ($inputs as $key => $label ) {
$method = 'set_'. $key;
$customer->$method( $value );
}
这看起来很直接。但是,帐单信息不会更改。
我做错了什么?是否有其他功能可以解决此问题?
Woocommerce 文档并没有真正解释太多。
您可以使用 update_user_meta()
函数来完成,这样:
$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 );
}
您需要在数组中设置值。
您必须在设置属性后保存更改。在您的代码中,在 foreach 之后添加:
$customer->save();
瞧!