Een nieuwe user toevoegen in WordPress Database met een specifieke rol

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ralf Kluttermann

Ralf Kluttermann

12/06/2023 22:58:36
Quote Anchor link
Hoi,

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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!

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 -
 
PHP hulp

PHP hulp

25/06/2024 21:44:43
 
- Ariën  -
Beheerder

- Ariën -

12/06/2023 23:18:10
Quote Anchor link
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.
 
Ralf Kluttermann

Ralf Kluttermann

12/06/2023 23:20:11
Quote Anchor link
- 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.


Bedankt Ariën, maar ben een echte newbie en dus mijn excuses voor dit
 
- Ariën  -
Beheerder

- Ariën -

12/06/2023 23:22:07
Quote Anchor link
Je zegt nu altijddat het werkt, zelfs als het niet zou werken. Dus je zult op zoek moeten gaan naar een controle mechanisme of de actie gelukt is.

Kijk eens wat var_dump($wpdb->insert($wpdb->users, $user_data)) bijvoorbeeld geeft.
 
- Ariën  -
Beheerder

- Ariën -

16/06/2023 17:59:29
Quote Anchor link
Is het nog gelukt?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.