Is there a simple way to temporarily stop a user role logging in with wordpress?
For example, if I have a user role called media, how can I block them from logging in?
I would like a custom message to appear on the website, for example like ‘Site undergoing maintenance’
So it looks like this:
The reason why, is because my website is completely locked down from the public using this function…
// LOCK DOWN
add_action('get_header', 'wpq_member_only_site');
function wpq_member_only_site() {
// logged in users or visits to a specified page are allowed
if ( !is_user_logged_in() ) {
$redirect_after_login = get_home_url();
// the URL where login/registration takes place
$login_url = wp_login_url( $redirect_after_login );
// redirect visitors
wp_redirect( $login_url, 302 );
exit;
}
}
But I need to do some maintenance and I’m after a simple way to lock all users out that are the role media.
This is because I wan’t administrators and editors to still have access, but not media.
3 Answers
With a some digging and learning, I managed to combine various help and create these 2 functions…
// MAINTAINANCE MODE
function site_maintenance() {
if ( current_user_can('media') || current_user_can('genpo') ) {
$logout_url = wp_login_url().'?mode=maintainance';
wp_logout();
wp_redirect( $logout_url, 302 );
}
}
add_action('get_header', 'site_maintenance');
// CUSTOM LOGIN MESSAGES
function my_login_message() {
if( $_GET['mode'] == 'maintainance' ){
$message="<p class="message"><b>Site undergoing maintainance.</b></p>";
return $message;
}
}
add_filter('login_message', 'my_login_message');