Zamir
Zamir

Reputation: 11

Use user phone number as auto generated password

I want a code that the password generated by woocommerce will be taken from the phone field on the checkout page when the user fills in the details for the billing I tried the following code and it did not work I would love a code that works. thanks.

<?php

//Use user phone number as auto-generated password

function wcs_filter_password_phone_number( $args ) {
    $args['user_pass'] = $args['dbem_phone']; 
    return $args;
}
add_filter( 'woocommerce_new_customer_data', 'wcs_filter_password_phone_number' );

Upvotes: 1

Views: 151

Answers (1)

businessbloomer
businessbloomer

Reputation: 1132

It's not really secure setting the password based on the customer's phone number. Anyone could find a way in to be honest.

Having said that, the task is interesting, and based on WooCommerce: Update Order Field Value After a Successful Order it is possible indeed to alter an order/user field after a successful checkout.

You could hook into "woocommerce_thankyou" as per the article, or even into "woocommerce_payment_complete" if you wanted to do that in the background and only for paid/completed orders.

Also, you should look into https://developer.wordpress.org/reference/functions/wp_set_password/ which is the WP function to set a new password programmatically.

Here's my attempt:

add_action( 'woocommerce_thankyou', 'bbloomer_alter_password_after_order' );
 
function bbloomer_alter_password_after_order( $order_id ) {
   $order = wc_get_order( $order_id );
   $phone = $order->get_billing_phone();
   $user_id = $order->get_user_id();
   if ( $phone && $user_id ) {
       wp_set_password( $phone, $user_id );
   }   
}

Upvotes: 2

Related Questions