admin管理员组文章数量:1123657
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.
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.
Share Improve this question edited Feb 11, 2021 at 9:43 Tom J Nowell♦ 60.7k7 gold badges77 silver badges147 bronze badges asked Jan 15, 2013 at 14:15 JoshcJoshc 1,5207 gold badges24 silver badges41 bronze badges 3- I created a simple plugin that will allow you to do this without messing around with code. The message displayed to disabled users is also filterable. wordpress.org/plugins/disable-users – jaredatch Commented Aug 29, 2013 at 2:17
- If you want to use the ready-made plugin for a temporary block of certain user's accounts then the User Blocker WordPress plugin is a useful solution for you. https://wordpress.org/plugins/user-blocker/ – Mary Martin Commented Feb 11, 2021 at 5:31
- 1 I converted the above 2 answers into comments as they are not answers, they're recommendations. Answers must be self contained, you can use links to support an answer, but the link can't be the answer itself – Tom J Nowell ♦ Commented Feb 11, 2021 at 9:41
3 Answers
Reset to default 5With 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');
Add in a check for a capability that admins and editors share:
add_action( 'get_header', 'wpse81659_maintenance' );
function wpse81659_maintenance() {
if ( ! current_user_can( 'publish_pages' ) || ! is_user_logged_in() )
die( 'Site undergoing maintenance' );
}
add_filter( 'authenticate', 'restrict_media_role_authenticate', 99 );
function restrict_media_role_authenticate( $user, $username, $password ){
if ( in_array( 'media', (array) $user->roles ) ) {
return new WP_Error( 'denied', "Site undergoing maintenance." );
}
return $user;
}
本文标签: Temporarily disable user role login and replace with message
版权声明:本文标题:Temporarily disable user role login and replace with message 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1736578440a1944907.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论