Een nieuwe user toevoegen in WordPress Database met een specifieke rol
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):
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?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;
}
}
?>
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!
Edit:
Ik heb code-tags geplaatst. Voortaan dit zelf doen. Zie ook opmaakcodes bij de Veelgestelde Vragen.
Gewijzigd op 12/06/2023 23:14:22 door - Ariën -
Ook zou er iets van foutafhandeling in moeten zitten, want nu sta je maar op lijn 55 te gokken dat het werkt.
- Ariën - op 12/06/2023 23:18:10:
heb je al met var_dump() gekeken wat er gebeurt?
Ook zou er iets van foutafhandeling in moeten zitten, want nu sta je maar op lijn 55 te gokken dat het werkt.
Ook zou er iets van foutafhandeling in moeten zitten, want nu sta je maar op lijn 55 te gokken dat het werkt.
Bedankt Ariën, maar ben een echte newbie en dus mijn excuses voor dit
Kijk eens wat var_dump($wpdb->insert($wpdb->users, $user_data)) bijvoorbeeld geeft.
Is het nog gelukt?