Permitir al administrador bloquear usuarios

Tiempo estimado de lectura: 5 minutos

 

Cómo podemos permitir al administrador bloquear usuarios

Esta semana veremos cómo podemos permitir al administrador bloquear usuarios.

Imagínate que quieres bloquear a un usuario de tu WordPress, y además de impedirle entrar en el sistema, también mostrarle un mensaje que le diga que esa cuenta está bloqueada.

La diferencia entre esta forma de hacerlo y eliminarlo directamente desde los usuarios, es que, con este código que veremos hoy, crearemos una nueva opción en la parte inferior del perfil de cada usuario del sitio, que nos permitirá bloquearlo, pero no eliminarlo.

Código que vamos a utilizar para permitir al administrador bloquear usuarios

Como hemos dicho, vamos a utilizar un código con el que podremos eliminar a cada usuario desde nuestro propio perfil. Pero esta opción solo estará disponible para el administrador del sitio, así el propio usuario u otros usuarios de tu WordPress, no podrán bloquear a usuarios de forma indiscriminada.

 


 
El código que vamos a usar es el siguiente:

// mostrar al administrador la casilla de verificación
add_action( ‘edit_user_profile’, ‘ban_user_profile_fields’ );
function ban_user_profile_fields( $user ) {
global $current_user;
if ( current_user_can( ‘edit_user’ ) && $user->ID != $current_user->ID ){
$status = get_the_author_meta( ‘ban_user’, $user->ID );
?>
<h3><?php _e(“Estado de la cuenta”, “blank”); ?></h3>
<table class=”form-table”>
<tr>
<th>Bloquear Usuario</th>
<td><label for=”ban_user”><input type=”checkbox” name=”ban_user” id=”ban_user” value=”1″ <?php if($status == 1){ echo ‘ checked’; } ?> /></label>
<span class=”description”><?php _e(“Si activas esta opción, bloquearás a este usuario.”); ?></span>
</td>
</tr>
</table>
<?php
}
}
// Guardar perfil del usuario, no eliminarlo
add_action( ‘edit_user_profile_update’, ‘save_extra_user_profile_fields’ );
function save_extra_user_profile_fields( $user_id ){
if ( !current_user_can( ‘edit_user’, $user_id ) ) { return false; }
update_usermeta( $user_id, ‘ban_user’, $_POST[‘ban_user’] );
}
// Comprobar si el usuario realmente está bloqueado
add_filter( ‘wp_authenticate_user’, ‘login_ban_status’, 1 );
function login_ban_status($user) {
if ( is_wp_error( $user ) ) { return $user; }
$status = get_user_meta( $user->ID, ‘ban_user’, ‘true’ );
if($status == 1){
return new WP_Error( ‘banned’, __(‘<strong>ERROR</strong>: No puedes acceder. Esta cuenta ha sido bloqueada.’, ‘banned’) );
}
return $user;
}

Qué hace este código

Como puedes ver, el código es sencillo de entender. En primer lugar, creamos la casilla de verificación que utilizará la función ban_user_profile_fields, esta función es la encargada de banear, es decir, de bloquear usuarios.

A continuación creamos la estructura que mostrará la opción de bloquear.

Después, utilizamos la función save_extra_user_profile_fields que nos permitirá guardar los datos del usuario, en lugar de eliminarlos.

Lo último que haremos es comprobar si realmente el usuario se ha bloqueado, y también, mostrar el error que le aparecerá a dicho usuario cuando intente iniciar sesión con sus datos.

El resultado es el siguiente:

Crear la estructura que permita al administrador bloquear usuarios
Crear la estructura que permita al administrador bloquear usuarios

Dónde tenemos que colocar este código

Como ya sabrás, existen varias formas para introducir este código en nuestros sistema, pero yo siempre te aconsejo utilizar un plugin de snippets o un plugin de funciones.

Y por último, nos falta saber cómo se le mostrará al usuario el aviso de bloqueo.

Permitir al administrador bloquear usuarios
Permitir al administrador bloquear usuarios

 


¿Te ha servido este artículo?, NO MOJES A LOS GREMLINS CON AGUA. 0


¿Qué te ha parecido el artículo?. Házmelo saber en los comentarios que tienes más abajo. Estoy deseando leerte.

Por último, si crees que este artículo puede ser interesante para algún amigo tuyo, te agradecería enormemente que lo compartieras con él y con todo el mundo a través de las Redes Sociales.

Puntúa este artículo:
[Total: 0 - Promedio: 0]

Puede que también te interese...

Deja una respuesta

Información básica sobre protección de datos
Responsable: Jose González Bueno.
Finalidad: Moderación y publicación de comentarios.
Destinatarios: No se comunican datos a terceros, salvo por imperativo legal.
Derechos: Tienes derecho a acceder, rectificar, exportar y suprimir tus datos.

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

He leído y acepto la política de privacidad de este sitio. *