web-dev-qa-db-fra.com

Comment créer et récupérer des données à partir d'un formulaire d'inscription spécial?

Quelle est la méthode recommandée pour aborder le problème suivant? Je dois créer deux pages. Sur une page, j'aurai un petit formulaire où les utilisateurs pourront s'inscrire eux-mêmes (avec ou sans photo). Sur l'autre page, je montrerai toutes les informations des utilisateurs saisies sur le formulaire précédent. Pour la section admin, il me suffit de répertorier tous les utilisateurs enregistrés et de pouvoir les supprimer.

Je ne veux pas toucher au matériel d'enregistrement d'utilisateur par défaut WP, car il est déjà utilisé et je ne peux pas mélanger les choses.

Est-il possible d'utiliser un type de type de publication personnalisé? Un plugin ou une idée?

1
Daniel

Le code suivant crée un nouveau rôle. En fait, il s'agit simplement de cloner le rôle d'abonné. Par conséquent, si vous n'utilisez pas ce rôle actuellement, vous pouvez également l'utiliser.

La fonction suivante ne doit être exécutée qu'une seule fois (elle est exécutée lorsqu'un utilisateur est "administrateur")

//Creates a custom role called 'my_new_role'.
//Run this once then feel free to comment out the next line:
add_action('admin_init', 'my_custom_role');
function my_custom_role(){
    global $wp_roles;

    $subscriber = $wp_roles->get_role('subscriber');

    //Adding a 'new_role' with subscriber caps
    $wp_roles->add_role('my_new_role', 'My New Role', $subscriber->capabilities);
    //Optional add/remove caps, like the capability to access the dashboard
    //$wp_roles->remove_cap('my_new_role','read');  
}

Voir le codex pour plus d’informations sur les capacités .

Où que vous traitiez le formulaire, vous souhaiterez créer un nouvel utilisateur et lui attribuer le rôle 'mon_nouveau_rôle'. Pour ce faire, utilisez le wp_insert_user . En bref exemple:

wp_insert_user( array (
    'user_login' => 'JoeBloggs',
    'user_pass' => 'a_password_43463', 
    'first_name' => 'Joseph',
    'last_name' => 'Bloggs',
    'role'=>'my_new_role') ) ;

Auparavant, vous devriez avoir effectué tous les contrôles de non-respect, validation des données et autres contrôles .

Vous souhaiterez peut-être rediriger ces nouveaux utilisateurs vers une page différente (pas le tableau de bord) lorsqu'ils se connecteront. Pour ce faire, utilisez le filtre login_redirect.

add_filter('login_redirect', 'dashboard_redirect');
function dashboard_redirect($url) {
    global $current_user;
    get_currentuserinfo();

    if (current_user_can('my_new_role')) {
             //current user is 'my_new_role', take them somewhere else...
             $url = home_url(); 
        }
        return $url;
    }
2
Stephen Harris

Je le ferais face de cette façon:

Les extensions de base de données pour wordpress vous permettent de gérer très facilement le contenu. Il vous suffit de créer le (s) formulaire (s). Vous pouvez ensuite récupérer et modifier les informations à votre guise. Pour l’autre page, puisque l’extension vous indique le chemin de la base de données, il vous suffit de faire quelques requêtes et vous avez terminé.

0
andresmijares