WooCommerce 以编程方式/通过函数创建帐户
Posted
技术标签:
【中文标题】WooCommerce 以编程方式/通过函数创建帐户【英文标题】:WooCommerce Create account programmatically / through function 【发布时间】:2015-12-21 20:58:18 【问题描述】:是否可以像使用 WordPress 用户一样以编程方式创建客户。显然 WooCommerce 用户共享一些相同的 WordPress 用户字段,还有一些额外的内容需要设置,例如帐单/邮政地址。
以前有人做到过吗?我在他们网站上的 WooCommerce API / 函数列表中找不到任何内容。
编辑:刚刚发现:http://docs.woothemes.com/wc-apidocs/function-wc_create_new_customer.html
但是我怎样才能提供其他字段详细信息(如地址)。
【问题讨论】:
【参考方案1】:在尝试创建新用户之前,我会查看该用户是否已经存在,如果找到则更新现有用户。 get_user_by(field,value) 函数返回用户对象,因此如果用户存在,则使用他们的 id 更新元字段,或者如果不创建新的。
$email = 'test@test.test';
$address = array(
'first_name' => 'Tester',
'last_name' => 'Test',
'company' => 'Testing, LLC',
'email' => $email,
'phone' => '777-777-777-777',
'address_1' => '310 S. Main Street',
'address_2' => '',
'city' => 'Las Vegas',
'state' => 'NV',
'postcode' => '89000',
'country' => 'US'
);
$default_password = wp_generate_password();
$user = get_user_by('login', $email);
if (!$user = $user->ID) $user = wp_create_user( $email, $default_password, $email );
update_user_meta( $user, "billing_first_name", $address['first_name'] );
update_user_meta( $user, "billing_last_name", $address['last_name']);
update_user_meta( $user, "billing_company", $address['company'] );
update_user_meta( $user, "billing_email", $address['email'] );
update_user_meta( $user, "billing_address_1", $address['address_1']);
update_user_meta( $user, "billing_address_2", $address['address_2'] );
update_user_meta( $user, "billing_city", $address['city']);
update_user_meta( $user, "billing_postcode", $address['postcode'] );
update_user_meta( $user, "billing_country", 'US');
update_user_meta( $user, "billing_state", $address['state'] );
update_user_meta( $user, "billing_phone", $address['phone'] );
update_user_meta( $user, "shipping_first_name", $address['first_name'] );
update_user_meta( $user, "shipping_last_name", $address['last_name']);
update_user_meta( $user, "shipping_company", $address['company'] );
update_user_meta( $user, "shipping_address_1", $address['address_1']);
update_user_meta( $user, "shipping_address_2", $address['address_2'] );
update_user_meta( $user, "shipping_city", $address['city']);
update_user_meta( $user, "shipping_postcode", $address['postcode'] );
update_user_meta( $user, "shipping_country", 'US');
update_user_meta( $user, "shipping_state", $address['state'] );
【讨论】:
当您已经部分拥有地址字段索引时,您可以只使用 3-4 行代码而不是 20 多行update_user_meta
运行 foreach
循环
你应该使用: wc_create_new_customer( $email, $username, $password );而不是:'wp_create_user($email, $default_password, $email);',对吗?
太好了,+1 供您验证。此外,您可以创建一个包含所有这些字段的数组,然后声明: foreach ( $billing_address as $key => $value ) update_user_meta( $user, $key, $value ); foreach ( $shipping_address as $key => $value ) update_user_meta( $user, $key, $value ); 【参考方案2】:
WooCommerce 客户本质上是具有额外元数据的 WordPress 用户。因此,创建用户后,您可以使用 update_user_meta
函数向其添加元数据。导航到用户 -> 所有用户,编辑其中一个用户,然后向下滚动以查看字段。
编写下面给出的代码,让您了解其工作原理。
$user_id = wc_create_new_customer( $email, $username, $password );
update_user_meta( $user_id, "billing_first_name", 'God' );
update_user_meta( $user_id, "billing_last_name", 'Almighty' );
.... more fields
这是账单和运输字段的完整列表
计费
billing_first_name billing_last_name billing_company billing_address_1 billing_address_2 billing_city billing_postcode billing_country billing_state billing_email billing_phone运费
shipping_first_name shipping_last_name shipping_company shipping_address_1 shipping_address_2 shipping_city shipping_postcode shipping_country shipping_state【讨论】:
非常感谢。我在午餐时得出了同样的结论,但我会为以后遇到它的用户标记你的答案。 @AnandShah 能否请您回复一个您从哪里获得此字段列表的链接?请尽快做。 docs.woocommerce.com/document/… 新链接 update_user_meta 由于某种原因,以这种方式创建的用户不会出现在管理员的 WooCommerce 客户列表中。以上是关于WooCommerce 以编程方式/通过函数创建帐户的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式更新 WooCommerce 产品中设置的自定义属性值
自定义以编程方式在 Woocommerce 中添加运费 [重复]