【问题标题】:WooCommerce Create account programmatically / through functionWooCommerce 以编程方式/通过函数创建帐户
【发布时间】:2015-12-21 20:58:18
【问题描述】:

是否可以像使用 WordPress 用户一样以编程方式创建客户。显然 WooCommerce 用户共享一些相同的 WordPress 用户字段,还有一些额外的内容需要设置,例如帐单/邮政地址。

以前有人做到过吗?我在他们网站上的 WooCommerce API / 函数列表中找不到任何内容。

编辑:刚刚发现:http://docs.woothemes.com/wc-apidocs/function-wc_create_new_customer.html

但是我怎样才能提供其他字段详细信息(如地址)。

【问题讨论】:

    标签: wordpress woocommerce account


    【解决方案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 能否请您回复一个您从哪里获得此字段列表的链接?请尽快做。
    • 新链接 update_user_meta
    • 由于某种原因,以这种方式创建的用户不会出现在管理员的 WooCommerce 客户列表中。
    猜你喜欢
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 2018-02-09
    • 2012-09-09
    • 1970-01-01
    相关资源
    最近更新 更多