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>