Я обновил свой код, но проблема в том, что get_the_ID не получает никакого значения. Не могли бы вы помочь. Этот код добавлял function.php в дочернюю тему.

// Works in single post outside of the Loop
add_filter( 'authenticate', 'myplugin_auth_signon', 30, 3 );
function myplugin_auth_signon( $user, $username, $password ) {
        $user       =   get_user_by( 'login', $username );
        $roles      =   $user->roles['0'];

            $id = get_the_ID();
            echo $id;
            if ( is_page( $id == 400380 ) )
            {
                echo "Employee Page";
                $user = new WP_Error( 'denied', "Customer have no permission to login from this employee login form" );


            }
            if ( is_page( $id == 399649 ) )
            {
                echo "Customer";

            $user = new WP_Error( 'denied', "Employee have no permission to login from this customer login form" );


            }



    return $user;

}
1
Osama Baqi 24 Сен 2018 в 13:56

2 ответа

Лучший ответ

Вы можете запретить другим ролям использовать ловушку фильтра authenticate для входа в систему.

add_filter( 'authenticate', 'myplugin_auth_signon', 30, 3 );

function myplugin_auth_signon( $user, $username, $password ) {
        $user       =   get_user_by( 'login', $username );
        $roles      =   $user->roles['0'];

        if($roles != 'sales' && is_page('YOUR_SALES_PAGE_ID')){
            $user = new WP_Error( 'denied', "You have not permission to login from this form" );
            return $user;
         }
    return $user;
}

Замените YOUR_SALES_PAGE_ID своим текущим идентификатором страницы входа в систему продаж.

Для получения дополнительной помощи перейдите по этой ссылке: Нажмите здесь

1
dineshkashera 24 Сен 2018 в 12:11

Роли пользователей поступают от database? проверьте это раньше, а затем выполните свою логику.

0
Sargis Tovmasyan 24 Сен 2018 в 11:01