Reputation: 103
I am trying to create a new user within the woocommerce_order_status_completed
hook.
add_action( 'woocommerce_order_status_completed', 'custom_woocommerce_order_status_completed', 10, 1 );
function custom_woocommerce_order_status_completed( $order_id )
{
$password = wp_generate_password( 16, true );
$user_id = wp_create_user( '[email protected]', $password, '[email protected]' );
}
$user_id
returns an actual ID. It appears to create the user but when i look at the backend the user is not there. I even check the database for the user id and it's not there.
If i call the same function on the action woocommerce_after_register_post_type
it creates the user.
Any idea what could be causing this issue?
Upvotes: 2
Views: 3142
Reputation: 253859
The following code uses Woocommerce wc_create_new_customer()
dedicated function instead:
add_action( 'woocommerce_order_status_completed', 'action_on_order_status_completed', 20, 2 );
function action_on_order_status_completed( $order_id, $order ){
$password = wp_generate_password( 16, true );
$user_name = $user_email = '[email protected]';
// $user_name = $user_email = $order->get_billing_email();
$customer_id = wc_create_new_customer( $user_email, $user_name, $password );
}
Code goes in function.php file of your active child theme (or active theme). Tested and works.
Upvotes: 1
Reputation: 1705
It looks like your function name does not match the one call within your hook:
custom_woocommerce_order_status_completed
Upvotes: 0