web-dev-qa-db-fra.com

Comment forcer les utilisateurs de buddypress à compléter le profil après leur inscription?

Cela semble logique pour tout autre réseau, mais pas pour buddypress :((

Nous connaissons tous les profils d'utilisateurs étendus dans buddypress - le problème est, même si certains champs sont marqués comme requis, que "requis" ne semble pas avoir de signification réelle pour les développeurs de buddypress. Nous avons donc des champs "obligatoires", que personne ne demande JAMAIS à l'utilisateur de remplir ... "Super" travail jusqu'à présent ...

La question est donc ... comment pouvons-nous forcer l'utilisateur nouvellement enregistré à renseigner tous les champs obligatoires du profil d'utilisateur étendu, AVANT qu'il puisse utiliser quoi que ce soit sur le site!?

Comme il s’enregistre avec le nom, le prénom, le courrier électronique et une fois qu’il se connecte, il se verra présenter une page/un écran sur lequel il devra d’abord compléter tous les autres champs requis manquants, avant de pouvoir visualiser tout contenu sur le site. !!?

Quelqu'un veut-il une idée sur comment y parvenir? Cela fait plus d'un an que je pense chercher une solution ... :-(

3
Carry

Utilisez wp_redirect() et admin_url() pour rediriger l'utilisateur vers sa page de profil si les métadonnées personnalisées de l'utilisateur buddypress ne sont pas complètement renseignées.

D'une autre réponse, j'ai vu qu'il existe la fonction suivante: bp_get_profile_field_data(). Ainsi, vous pouvez facilement créer une balise de modèle, qui vous donne soit la totalité des métadonnées de l'utilisateur, soit tout simplement un retour à FALSE.

Si vous obtenez une FALSE retour, vous pouvez rediriger l'utilisateur. Sur le hook get_user_metadata-, vous avez déjà le jeu global $current_user, vous pouvez donc faire la redirection sur le hook template_redirect-.

function wpse57054_is_buddy_complete( $buddy_user_fields = array() )
{
    // convert single field keys to arrays
    $buddy_user_fields = (array) $buddy_user_fields;

    foreach ( $buddy_user_fields as $buddy_user_meta )
    {
        $data = bp_get_profile_field_data( array( 
            'field'   => $buddy_user_meta,
            'user_id' => wp_get_current_user()->id,
        ) );
        // One field empty/not filled: Abort and return FALSE
        if ( empty( $data ) )
            return false;
    }

    // Return the whole data set
    return $data;
}
5
kaiser

Non utilisé moi-même, mais l'une des fonctionnalités de la version PRO de BuddyPress Group-O-Matic est que les membres ne peuvent pas naviguer sur un site partenaire tant que leur profil n'est pas complet.

rt.

1
rtd2

On dirait que vous devriez plutôt mettre ces champs dans la page d'inscription, de sorte qu'ils ne reçoivent même pas un nom d'utilisateur ou un mot de passe tant qu'ils ne vous ont pas fourni cette information.

Sinon, cela devient une douleur pour vous et pour l'utilisateur.

1
Tyler Carter

Je viens de publier dans le référentiel mon propre plug-in, BP Force Profile .

Un plugin pour forcer les utilisateurs de buddypress à remplir les champs obligatoires de leurs profils. Chaque utilisateur avec un profil non complet est redirigé vers sa page de profil et un avis est affiché avec les champs obligatoires.

0
rc183