i did prevent all user are not admin from wp-admin with this code
add_action( 'init', 'blockusers_init' ); function blockusers_init() { if ( is_admin() && ! current_user_can( 'administrator' ) && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) { wp_redirect( home_url() ); exit(); } }
and i created frontend login form with wp_signon();
the problem is when i submit form in admin account it’s successfully logged in but when trying access wp-admin it always return to home page url so what’s wrong and how can i fix this problem my form
<?php if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['logingo']) && $_POST['logingo']=='logingo'){ global $user; $creds = array(); $username = (isset($_POST['login_name'])) ? $_POST['login_name'] : ''; $password = (isset($_POST['login_password'])) ? $_POST['login_password'] : ''; $creds['user_login'] = $username; $creds['user_password'] = $password; $creds['remember'] = true; $userid = wp_signon($creds,false); if(is_wp_error($user)){ $proccess = '<div class="error_msg">'.$user->get_error_message().'</div>'; $_SESSION['logged_errors'] = $proccess; } if(!is_wp_error($userid)){ $_SESSION['logged_success'] = 'success message'; wp_redirect(get_author_posts_url($userid->ID)); exit(); } } ?> <form action="" method="post"> <label class="login_name"> <input type="text" value="" name="login_name" required /> </label> <label class="user_password"> <input type="password" name="login_password" required /> </label> <button type="submit" name="logingo" value="logingo">go</button> </form>