web-dev-qa-db-fra.com

Redirection automatique après la connexion

En multisite, ce code redirige les utilisateurs (auteurs) vers /wp-admin/post-new.php après la connexion ... mais me redirige également (super administrateur), comment puis-je empêcher cela?

function primary_login_redirect( $redirect_to, $request_redirect_to, $user )
{
    if ($user->ID != 0) {
        $user_info = get_userdata($user->ID);
        if ($user_info->primary_blog) {
            $primary_url = get_blogaddress_by_id($user_info->primary_blog) . 'wp-admin/post-new.php';
            if ($primary_url) {
                wp_redirect($primary_url);
                die();
            }
        }
    }
    return $redirect_to;
} 
add_filter('login_redirect','primary_login_redirect', 100, 3);
1
Ghinnersmee

Vous pouvez tester contre is_super_admin(). Ce qui suit fonctionne dans mes tests:

function primary_login_redirect( $redirect_to, $request_redirect_to, $user ) {
    if ( is_a( $user, 'WP_User' ) && ! is_super_admin( $user->ID ) ) {
        if ( $user_info->primary_blog ) {
        $user_info = get_userdata( $user->ID );
            $primary_url = get_blogaddress_by_id( $user_info->primary_blog ) . 'wp-admin/post-new.php';
            if ( $primary_url ) {
                wp_redirect( $primary_url );
                die();
            }
        }
    }
    return $redirect_to;
} 
add_filter( 'login_redirect', 'primary_login_redirect', 100, 3 );

La vérification is_a() efface certains avis que j'ai reçus lors de la déconnexion.

EDIT: Si vous voulez créer une URL de redirection différente réservée aux super-administrateurs, je souhaite procéder à une restructuration de la sorte

function primary_login_redirect( $redirect_to, $request_redirect_to, $user ) {
    if ( is_a( $user, 'WP_User' ) ) {
        if ( ! is_super_admin( $user->ID ) ) {
            $user_info = get_userdata( $user->ID );
            if ( $user_info->primary_blog )
                $primary_url = get_blogaddress_by_id( $user_info->primary_blog ) . 'wp-admin/post-new.php';
        } else { // super admins
            $primary_url = network_admin_url( 'sites.php' );
        }
        if ( $primary_url ) {
            wp_redirect( $primary_url );
            die();
        }
    }
    return $redirect_to;
} 
add_filter( 'login_redirect', 'primary_login_redirect', 100, 3 );
2
DrewAPicture