【问题标题】:Add user and user meta after order placed - Woocommerce下订单后添加用户和用户元数据 - Woocommerce
【发布时间】:2018-06-12 15:42:17
【问题描述】:

我有一个函数可以在购买后创建一个用户,连接到woocommerce_thankyou。用户已创建,但我也在尝试设置一个 usermeta 字段,它似乎被忽略了。函数如下:

function wc_register_user_post_purchase( $order_id ) {
    // Get the order data
    $order = new WC_Order( $order_id );

    // Get the email address from the order
    $order_email = $order->billing_email;

    // Check to see if there is already a user with the order email
    $acct_username = username_exists( $order_email );
    $acct_email = email_exists( $order_email );

    // If the user doesn't exist, create an account
    if ( $acct_username == false && $acct_email == false ) {
        // Generate a password
        $random_password = wp_generate_password();

        // Create a new user
        $created_user_id = wp_create_user( $order_email, $random_password, $order_email );

        // Set an 'acct_auto_created' custom field so we can check it later
        update_user_meta( $created_user_id, 'acct_auto_created', 'auto_generated_pass' );
    }
}
add_action( 'woocommerce_thankyou', 'wc_register_user_post_purchase', 10, 1 );

如果我查看数据库中的 wp_usermeta 表以获取创建的用户 ID,acct_auto_created 字段根本没有设置。

我在这里错过了什么?

谢谢!

【问题讨论】:

  • 尝试使用 add_user_meta 而不是 update_user_meta

标签: wordpress woocommerce hook-woocommerce


【解决方案1】:

尝试从 $order_id 中获取 user_id 之类的

$order = new WC_Order( $order_id );
$user_id = $order->user_id;
 if($user_id){
  update_user_meta( $user_id, 'acct_auto_created', 'auto_generated_pass' );
  }

 $user_id = wp_insert_user(
array(
    'user_login'    =>  $order_email,
    'user_pass' =>  $random_password,
    'user_email'    =>  $order_email,
)
);

update_user_meta( $user_id, 'acct_auto_created', 'auto_generated_pass' );

if( null == username_exists( $order_email ) ) {

// Generate the password and create the user
$password = wp_generate_password( 12, false );
$user_id = wp_create_user( $order_email, $password, $order_email );

// Set the nickname
wp_update_user(
array(
'ID'          =>    $user_id,
'nickname'    =>    $order_email
)
);

// Set the role
$user = new WP_User( $user_id );
$created_user_id = $user->ID;
update_user_meta( $created_user_id, 'acct_auto_created', 'auto_generated_pass' );
}

【讨论】:

    猜你喜欢
    • 2020-10-01
    • 1970-01-01
    • 2021-10-20
    • 2021-11-15
    • 2020-01-17
    • 2019-09-12
    • 2022-08-19
    • 2020-05-01
    • 2021-08-27
    相关资源
    最近更新 更多