ik probeer nieuwe users rechtstreeks toe te voegen vanuit een form in wordpress. De website heeft als bedoeling dat bezoekers betalend kunnen chatten met therapeuten. Bezoekers kunnen al geregistreerd worden, echter is het de bedoeling dat er ook nieuwe therapeuten kunnen deelnemen. Dit uiteraard met vooraf contactopname waar zij dan een paswoord krijgen om te registreren. Via volgende PHP code tracht ik dit te doen, echter krijg ik maar geen nieuwe user in de WordPress database met als rol 'shop manager' (ik gebruik deels woocommerce voor bepaalde functionaliteiten):
<?php
add_action('wp', 'register_therapist');
function register_therapist() {
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$first_name = sanitize_text_field($_POST['Name']);
$email = sanitize_email($_POST['Email']);
$whatsapp_number = sanitize_text_field($_POST['Whatsapp_Number']);
$password = sanitize_text_field($_POST['Received_Password']);
$username = sanitize_text_field($_POST['Username']);
$new_password = sanitize_text_field($_POST['New_Password']);
$verify_password = sanitize_text_field($_POST['Verify_Password']);
// Check if the password matches the predefined password (to ensure it's not a visitor)
if ($password !== 'A') {
// Display an error message or perform any necessary actions
echo 'Invalid password. Please provide the correct password.';
exit;
}
// Check if the new password and verify password fields match
if ($new_password !== $verify_password) {
// Display an error message or perform any necessary actions
echo 'Passwords do not match. Please verify your password.';
exit;
}
global $wpdb;
// Generate User Data
$user_data = array(
'user_login' => $username,
'user_pass' => wp_hash_password($new_password),
'user_email' => $email,
'user_registered' => current_time('mysql'),
'user_status' => 0, // 0 for active user, 1 for pending user
);
// Insert User Data
$wpdb->insert($wpdb->users, $user_data);
$user_id = $wpdb->insert_id;
// Set User Role
$wpdb->insert($wpdb->usermeta, array(
'user_id' => $user_id,
'meta_key' => 'wp_capabilities',
'meta_value' => serialize(array('shop_manager' => true)), // Adjust the role as needed
));
// Update user meta with additional information
update_user_meta($user_id, 'first_name', $first_name);
update_user_meta($user_id, 'whatsapp_number', $whatsapp_number);
// Display a success message or perform any additional actions
echo 'Registration successful. You can now log in as a Shop Manager.';
// Redirect to a confirmation page or perform any other desired actions
wp_redirect('/confirmation-page/');
exit;
}
}
?>
Thx voor alle hulp!