Je crée une page d’inscription personnalisée (rapide) sur mon site wordpress, afin de permettre aux utilisateurs de s’inscrire rapidement en remplissant simplement nomutilisateur-email et en choisissant leur mot de passe.
J'ai tpl-edit-profile.php
,
ce que je dois réaliser est de rediriger les utilisateurs après leur inscription à cette page (
tpl-edit-profile.php
)
Aucune activation ne devrait être nécessaire pour l'enregistrement.
Ensuite, les utilisateurs doivent renseigner et compléter toutes les données de profil avant de pouvoir être redirigés vers le reste du site. En d'autres termes, s'ils ne renseignent pas les informations de leur profil, ils ne peuvent pas continuer à utiliser le site. Toutes les actions sont conformes au tpl-edit-profile.php
. Une fois les informations de profil complétées, ils peuvent accéder à l'ensemble du site et l'utiliser.
Je vous remercie.
Vous devez vous connecter à l'action user_register.
J'ai fait quelque chose de similaire sur un site récent (ne pas obliger à remplir des champs de profil, mais à devoir renouveler une adhésion).
Je proposerai une solution en plusieurs parties (laissez-moi savoir si cela vous laisse perplexe, la journée a été longue et il est possible que je ne l'explique pas parfaitement).
EDIT: Après mûre réflexion, je vous conseillerais de transformer ce fichier PHP en un modèle et de le définir également comme page. Il sera plus facile d’y avoir des utilisateurs de la redirection Wordpress. (Par souci du code ci-dessous, disons que vous l'avez défini sur/registration-step-2 /)
Tout d’abord, ajoutez une action sur le hook user_register et redirigez-la à l’aide de wp_redirect ([insérez ici l’url de la page de modification du profil]).
Quelque chose comme:
//run this when a new user registers
add_action('user_register','continue_to_registration');
//redirects user to registration form
function continue_to_registration() {
wp_redirect(get_option('siteurl') . '/registration-step-2/');
exit();
}
Deuxièmement, lorsqu'un utilisateur termine cet enregistrement en définissant une option personnalisée user_meta ou en ajoutant une fonctionnalité utilisateur, ma préférence personnelle ici serait une fonctionnalité, mais vous pouvez choisir l'une des deux méthodes. Cela vous permettra de vérifier la connexion si l'utilisateur a fini de s'inscrire ou non.
Par souci du code ci-dessous, supposons que vous ayez une variable pour votre soumission de formulaire appelée $ vérifiée et qu'elle soit définie sur true une fois que le formulaire a été traité avec succès.
Vous devrez ajouter du code supplémentaire à la partie traitement de votre formulaire. Quelque chose comme:
//set user capability on finished registration
if($verified) {
$user_id = get_current_user_id();
$user = new WP_User($user_id);
$user->add_cap('finished_registration');
}
Troisièmement, vous devrez vous connecter à deux actions: wp_login (pour vérifier si l’utilisateur se connectant dispose de votre méta option ou fonctionnalité personnalisée) et vous voudrez probablement aussi ajouter une vérification similaire à pre_get_posts (afin que l’utilisateur 'fini l’enregistrement, ils seront invités à chaque fois qu’ils essaieront de naviguer n’importe où)).
Quelque chose comme:
//run this function when a user logs in
add_action('wp_login','check_reg');
//check if user has finished registration when logging in
function check_reg($login) {
$user = get_userdatabylogin($login);
if(!$user->has_cap('finished_registration')) {
wp_redirect(get_option('siteurl') . '/registration-step-2/');
exit();
}
}
//run this function when a user tries to load a page
add_action('pre_get_posts','check_reg_on_page');
//check if user has finished registration before loading a page
function check_reg_on_page() {
if(is_user_logged_in()) {
if(!is_page('Registration Step 2') && !is_admin()) {
$user_id = get_current_user_id();
$user = new WP_User($user_id);
if(!$user->has_cap('finished_registration')) {
wp_redirect(get_option('siteurl') . '/registration-step-2/');
exit();
}
}
}
}
Assurez-vous, dans l'action pre_get_posts, que vous vérifiez que is_user_logged_in () et qu'ils ont également votre option ou capacité méta personnalisée.
Je peux essayer de fournir du code demain lorsque je serai au bureau, mais si vous êtes assez familiarisé avec les actions WordPress, tout devrait bien se passer.
En outre, en guise de remarque, je ferais de ce plug-in une fonctionnalité simple, de sorte que vous n'ayez pas à vous soucier de copier des fichiers functions.php si vous changez de thème plus tard.
Mais, pour m'assurer qu'ils le remplissent réellement, je définirais également une fonctionnalité utilisateur ou une option personnalisée user_meta une fois qu'ils l'auraient remplie, afin que vous puissiez indiquer au système qu'ils avaient terminé.
EDIT: Si vous utilisez GravityForms, faites le moi savoir, car vous voudrez peut-être vous accrocher à une action différente en raison de l'ordre dans lequel elles sont déclenchées. L'action Gravity Forms gform_user_registered est déclenchée après la fonction user_register et inclut toutes les données du formulaire auquel vous l'attachez, ce qui vous permet une plus grande flexibilité dans le traitement du formulaire et la modification des utilisateurs en fonction du formulaire.
EDIT 2: J'ai ajouté du code pour mieux articuler ce que je disais. Faites-moi savoir si vous avez besoin de clarification ou d'explication. Cela nécessitera évidemment quelques ajustements pour s’intégrer à votre code, mais les fonctions que j’ai incluses vous serviront bien si vous ajustez simplement le nom de la page sur la redirection.
MISE À JOUR PAR LES AMIS:
//run this function when a user tries to load a page
add_action('appthemes_before_header','check_reg_on_page'); // appthemes_before_header built-in action hook for jobroller theme
//add_action('pre_get_posts','check_reg_on_page'); // causes redirections loop error with jobroller theme
//check if user has finished registration before loading a page
function check_reg_on_page() {
if(is_user_logged_in()) {
if(!is_page('Registration Step 2') && !current_user_can( 'administrator' )) {//!is_admin() is not workin replaced by !current_user_can
$user_id = get_current_user_id();
$user = new WP_User($user_id);
$redirect = get_option('siteurl') . '/registration-step-2/';
if(!$user->has_cap('finished_registration')) {
wp_safe_redirect($redirect);
exit();
}
}
}
}