To resolve the error in your code for sending a password reset link via SMS using Twilio, here’s a refined version of your function with necessary error handling and dependencies:
function send_password_reset_sms( $user_login, $user_data ) {
$phone_number = get_user_meta( $user_data->ID, 'phone_number', true );
if ( ! empty( $phone_number ) ) {
$reset_key = get_password_reset_key( $user_data );
if ( is_wp_error( $reset_key ) ) {
error_log( 'Error generating password reset key: ' . $reset_key->get_error_message() );
return;
}
$reset_url = network_site_url( "wp-login.php?action=rp&key=$reset_key&login=" . rawurlencode( $user_login ), 'login' );
$message = "To reset your password, visit the following address: $reset_url";
$sid = 'YOUR_TWILIO_SID';
$token = 'YOUR_TWILIO_AUTH_TOKEN';
$twilio_number="YOUR_TWILIO_PHONE_NUMBER";
if ( class_exists( '\Twilio\Rest\Client' ) ) {
$client = new \Twilio\Rest\Client($sid, $token);
try {
$client->messages->create(
$phone_number,
[
'from' => $twilio_number,
'body' => $message
]
);
} catch ( Exception $e ) {
error_log( 'Twilio Error: ' . $e->getMessage() );
}
} else {
error_log( 'Twilio SDK not found. Please include the Twilio PHP SDK in your project.' );
}
} else {
error_log( 'No phone number available for user ' . $user_login );
}
}
add_action( 'retrieve_password', 'send_password_reset_sms', 10, 2 );
Ensure you have the Twilio SDK installed (composer require twilio/sdk
) and check your server logs for error messages during testing.