Перенаправление многоузлового входа в Wordpress на основе ролей пользователей - PullRequest
0 голосов
/ 06 мая 2020

У меня проблема, которая меня расстраивает, у меня есть мультисайт WordPress, и я хочу, чтобы пользователи каждого сайта перенаправлялись в зависимости от их ролей, за исключением суперадминистратора.

Я хочу, чтобы администраторы go на страницу с названием панели инструментов (это работает) и подписчики на go на домашнюю страницу (это не так)

Я добавил следующий код в функции. php:

    add_filter( 'login_redirect', 'wpse_159078_login_redirect' );
    function wpse_159078_login_redirect( $redirect ) {

        if( current_user_can( 'administrator' ) && ! current_user_can( 'manage_network' ) ) {
            // if it's not a super admin that's logging in
            $redirect = get_home_url() . "/dashboard";
            /*
            $page = get_page_by_title('dashboard');
            $redirect = get_permalink($page->ID);*/
        }else if(current_user_can( 'subscriber' ) && ! current_user_can( 'administrator' )){
            $redirect = get_home_url();
        }
        return $redirect;

    }

    add_action( 'init', 'blockusers_init' );
    function blockusers_init() {
    if ( is_admin() && current_user_can( 'administrator' ) && ! current_user_can( 'manage_network' ) && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {

    wp_redirect( get_home_url() . "/dashboard");
    exit;
    }else if(current_user_can( 'subscriber' ) && !current_user_can( 'administrator' ) && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX )){
        wp_redirect( get_home_url() );
    exit;
    }
    }

странно, когда я все изменил так, чтобы администратор go перешел на домашнюю страницу, это работает, подписчики не могут, ошибка, которую я получаю в браузере, - это слишком много перенаправлений, и когда я отслеживаю перенаправления Я вижу, что домашняя страница перенаправляется на себя несколько раз,

...