创建用户时以编程方式更新 WooCommerce 用户
Update WooCommerce User programmatically when creating a user
我正在尝试通过表单以编程方式创建新用户,但我在通过 wp_create_user
获取 phone 数字和国家/地区设置时遇到问题 - 为什么它不获取值?名字和姓氏按预期工作。
相关代码:
$user_id = wp_create_user( $username, $random_password, $user_email );
wp_update_user([
'ID' => $user_id,
'first_name' => rgar( $entry, '20.3' ),
'last_name' => rgar( $entry, '20.6' ),
'phone' => rgar( $entry, '16' ),
'country' => rgar( $entry, '24.6' )
]);
您可以将 country
和 phone
添加为用户元并将其保存在用户元中 table:
add_user_meta( $user_id, 'country', rgar( $entry, '24.6'));
add_user_meta( $user_id, 'phone', rgar( $entry, '16'));
WordPress 法典:Click Here
在 WooCommerce 中,phone 和国家/地区是账单字段,因此正确的用户元键是:
billing_country
(请记住您需要设置有效的国家代码)
billing_phone
您还需要设置 billing_email
、billing_first_name
和 billing_last_name
所以您的代码将改为,也将您的 wp_create_user()
函数替换为:
$username = rgar( $entry, '20.3' );
$email = rgar( $entry, '10' );
$password = wp_generate_password( 12, false );
$user_data = array(
'user_login' => $username,
'user_pass' => $password,
'user_email' => $email,
'role' => 'customer',
'first_name' => rgar( $entry, '20.3' ),
'last_name' => rgar( $entry, '20.6' ),
);
$user_id = wp_insert_user( $user_data ); // Create user with specific user data
然后添加 WooCommerce 用户数据有 2 种方法:
1).使用 WC_Customer
对象和方法:
$customer = new WC_Customer( $user_id ); // Get an instance of the WC_Customer Object from user Id
$customer->set_billing_first_name( rgar( $entry, '20.3' ) );
$customer->set_billing_last_name( rgar( $entry, '20.6' ) );
$customer->set_billing_country( rgar( $entry, '24.6') );
$customer->set_billing_phone( rgar( $entry, '16' ) );
$customer->set_billing_email( $email );
$customer->save(); // Save data to database (add the user meta data)
2) 或使用 WordPress update_user_meta()
函数 (旧方法):
update_user_meta( $user_id, 'billing_first_name', rgar( $entry, '20.3') );
update_user_meta( $user_id, 'billing_last_name', rgar( $entry, '20.6') );
update_user_meta( $user_id, 'billing_country', rgar( $entry, '24.6') );
update_user_meta( $user_id, 'billing_phone', rgar( $entry, '16') );
update_user_meta( $user_id, 'billing_email', $email );
我正在尝试通过表单以编程方式创建新用户,但我在通过 wp_create_user
获取 phone 数字和国家/地区设置时遇到问题 - 为什么它不获取值?名字和姓氏按预期工作。
相关代码:
$user_id = wp_create_user( $username, $random_password, $user_email );
wp_update_user([
'ID' => $user_id,
'first_name' => rgar( $entry, '20.3' ),
'last_name' => rgar( $entry, '20.6' ),
'phone' => rgar( $entry, '16' ),
'country' => rgar( $entry, '24.6' )
]);
您可以将 country
和 phone
添加为用户元并将其保存在用户元中 table:
add_user_meta( $user_id, 'country', rgar( $entry, '24.6'));
add_user_meta( $user_id, 'phone', rgar( $entry, '16'));
WordPress 法典:Click Here
在 WooCommerce 中,phone 和国家/地区是账单字段,因此正确的用户元键是:
billing_country
(请记住您需要设置有效的国家代码)billing_phone
您还需要设置 billing_email
、billing_first_name
和 billing_last_name
所以您的代码将改为,也将您的 wp_create_user()
函数替换为:
$username = rgar( $entry, '20.3' );
$email = rgar( $entry, '10' );
$password = wp_generate_password( 12, false );
$user_data = array(
'user_login' => $username,
'user_pass' => $password,
'user_email' => $email,
'role' => 'customer',
'first_name' => rgar( $entry, '20.3' ),
'last_name' => rgar( $entry, '20.6' ),
);
$user_id = wp_insert_user( $user_data ); // Create user with specific user data
然后添加 WooCommerce 用户数据有 2 种方法:
1).使用 WC_Customer
对象和方法:
$customer = new WC_Customer( $user_id ); // Get an instance of the WC_Customer Object from user Id
$customer->set_billing_first_name( rgar( $entry, '20.3' ) );
$customer->set_billing_last_name( rgar( $entry, '20.6' ) );
$customer->set_billing_country( rgar( $entry, '24.6') );
$customer->set_billing_phone( rgar( $entry, '16' ) );
$customer->set_billing_email( $email );
$customer->save(); // Save data to database (add the user meta data)
2) 或使用 WordPress update_user_meta()
函数 (旧方法):
update_user_meta( $user_id, 'billing_first_name', rgar( $entry, '20.3') );
update_user_meta( $user_id, 'billing_last_name', rgar( $entry, '20.6') );
update_user_meta( $user_id, 'billing_country', rgar( $entry, '24.6') );
update_user_meta( $user_id, 'billing_phone', rgar( $entry, '16') );
update_user_meta( $user_id, 'billing_email', $email );