web-dev-qa-db-fra.com

Buddypress register.php user redirect

Dans mon buddypress, j'ai défini la page de registre comme page d'accueil. Désormais, chaque fois qu'un utilisateur connecté essaie d'accéder à la page d'inscription (page d'accueil), il est redirigé vers le répertoire des membres. Je veux qu'il change à la page d'accueil. y a-t-il un moyen? J'ai essayé de changer le fichier buddypress/bp-members/bp-members-signup.php de cette façon:

// If the user is logged in, redirect away from here
if ( is_user_logged_in() ) {
    if ( bp_is_component_front_page( 'register' ) )
        $redirect_to = bp_get_root_domain() . '/' . bp_get_members_root_slug();
    else
        $redirect_to = bp_get_root_domain();

    bp_core_redirect( apply_filters( 'bp_loggedin_register_page_redirect_to', $redirect_to ) );

    return;
}

Pour ça:

// If the user is logged in, redirect away from here
if ( is_user_logged_in() ) {
    if ( bp_is_component_front_page( 'register' ) )
        $redirect_to = bp_get_root_domain() . '/';
    else
        $redirect_to = bp_get_root_domain();

    bp_core_redirect( apply_filters( 'bp_loggedin_register_page_redirect_to', $redirect_to ) );

    return;
}

Je reçois cette erreur:

La page ne redirige pas correctement

Firefox a détecté que le serveur redirige la requête pour cette adresse d'une manière qui ne sera jamais complète.

Quelqu'un sait comment résoudre ce problème?

1
Towfiq

Prévenez simplement que vous devriez utiliser le filtre bp_loggedin_register_page_redirect_to pour accomplir cela, plutôt que de modifier les fichiers BuddyPress (qui seront écrasés à chaque mise à jour).

function bbg_bp_loggedin_register_page_redirect_to( $redirect_to ) {
    if ( bp_is_component_front_page( 'register' ) )
        $redirect_to = bp_get_root_domain() . '/home';

    return $redirect_to;
}
add_filter( 'bp_loggedin_register_page_redirect_to', 'bbg_bp_loggedin_register_page_redirect_to' );

Mettez ceci dans le fichier functions.php de votre thème ou dans votre fichier bp-custom.php http://codex.buddypress.org/extending-buddypress/bp-custom-php/ . Cela ira dans le même sens, mais sans toucher à BuddyPress.

3
Boone Gorges

Ne pourriez-vous pas utiliser quelque chose comme la technique du jardin clos? Je ne sais pas si c'est vraiment ce que vous voulez, mais c'est personnalisable:

function sh_walled_garden()
            {
                global $bp;
                if( bp_is_register_page() || bp_is_activation_page() || bp_is_page( BP_FORUMS_SLUG ) || bp_is_page( BP_GROUPS_SLUG ) )
                    return;

                if( ! bp_is_blog_page() && ! is_user_logged_in() )
                    bp_core_redirect( bp_get_signup_page() );
            }
            add_action( 'bp_init', 'sh_walled_garden' );

Cela masque les membres et l'activité de ceux qui ne sont pas connectés, mais active les forums et les groupes pour tous - voir la variation ici . Cela va dans le fichier buddypress bp-custom.php et est discuté plus loin ici

Quelqu'un a mis un extrait similaire ici

0
Aces

D'accord. Trouvé le problème. J'essayais de rediriger les membres connectés de la page d'inscription à la page d'accueil. Et la page d'accueil a été configurée pour enregistrer la page. Ainsi, lorsqu'un membre inscrit essaie d'accéder à la page d'inscription, il est redirigé vers la page d'accueil, qui est définie sur la page d'inscription. Donc, il y a une boucle infinie de redirection. Les navigateurs n'autorisent pas ce type de redirection. Donc, je recevais ce message:

La page ne redirige pas correctement

Firefox a détecté que le serveur redirige la requête pour cette adresse d'une manière qui ne sera jamais complète.

Alors. au lieu de cela:

    $redirect_to = bp_get_root_domain() . '/';
else
    $redirect_to = bp_get_root_domain();

J'ai utilisé ceci:

    $redirect_to = bp_get_root_domain() . '/home'; //A custom page.
else
    $redirect_to = bp_get_root_domain();

maintenant cela fonctionne bien. :) Problème résolu.

0
Towfiq

Travaille pour moi :)

// If the user is logged in, redirect away from here
if ( is_user_logged_in() ) {
    if ( bp_is_component_front_page( 'register' ) )
        $redirect_to = bp_get_root_domain() . '/' . bp_get_activity_root_slug();
    else
        $redirect_to = bp_get_root_domain();

    bp_core_redirect( apply_filters( 'bp_loggedin_register_page_redirect_to', $redirect_to ) );

    return;
}
0
Sceko