Cómo prohibir a un usuario de WordPress

Hace unos días me pidieron que creara un sistema que prohibiría la instalación de un usuario de WordPress. Así que creé un complemento simple y quería compartir con ustedes los conceptos básicos de este complemento. En este tutorial cubriremos filtros de WordPress, acciones, administración de columnas de usuarios y algunas cosas más geniales.


Paso 1: crea el complemento

Una vez más, aquí es muy complicado, todo lo que tiene que hacer es crear una nueva carpeta con “wp-content / plugins” llamada “ban-users”. En esta carpeta, cree un nuevo archivo llamado “ban-users.php”, ábralo y pegue este código:

Paso 2: agregue una casilla de verificación en la página de perfil de los usuarios

Lo primero que debemos hacer es agregar una casilla de verificación en cada página de edición de perfil de usuario. Cuando marque esta casilla de verificación, almacenará una meta opción de usuario que indicará que ya no se le permite iniciar sesión en su sitio web..

Aquí está el código:

/ **
* Admin init
* *
* @acceso público
* @ desde 1.0
* @return void
* /
función rc_admin_init () {

// Editar perfil de usuario
add_action ('edit_user_profile', 'rc_edit_user_profile');
add_action ('edit_user_profile_update', 'rc_edit_user_profile_update');

}
add_action ('admin_init', 'rc_admin_init');

Este código simplemente está creando una llamada a una función que tenemos que crear ahora. Esta función agregará una casilla de verificación a la página de perfil de los usuarios.

/ **
* Agrega una casilla de verificación personalizada a la página de edición del usuario
* *
* @acceso público
* @ desde 1.0
* @return void
* /
función rc_edit_user_profile () {
if (! current_user_can ('edit_users')) {
regreso;
}

global $ user_id;

// El usuario no puede deshabilitarse
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
if ($ current_user_id == $ user_id) {
regreso;
}

// Comprobar si está habilitado
$ chequeado = marcado (get_user_option ('rc_banned', $ user_id, false));

// Mostrar casilla de verificación
eco '
Prohibir usuario
'; }

Ahora necesitamos tener la función que guardará en la base de datos el valor de la casilla de verificación:

/ **
* Guardar casilla de verificación personalizada
* *
* @acceso público
* @ desde 1.0
* @return void
* /
función rc_edit_user_profile_update () {

if (! current_user_can ('edit_users')) {
regreso;
}

global $ user_id;

// El usuario no puede deshabilitarse
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
if ($ current_user_id == $ user_id) {
regreso;
}

// Bloqueo
if (isset ($ _POST ['rc_ban']) && $ _POST ['rc_ban'] = 'on') {
rc_ban_user ($ user_id);
} else {// Desbloquear
rc_unban_user ($ user_id);
}

}

Como puede ver, esta nueva función utiliza otras dos funciones: rc_ban_users () y rc_unban_users (). Sus nombres son bastante explícitos, el primero almacenará en la base de datos el hecho de que un usuario está prohibido, el segundo desbloqueará a los usuarios.

Paso 3: Prohibir usuarios

Ahora es el momento de crear la función rc_ban_users (). En esta función, debemos verificar si un valor ya está almacenado, y si no, debemos almacenar el valor. Esa es la razón por la que llamo a una función que describiré más adelante: rc_is_user_banned ():

/ **
* Prohibir usuario
* *
* @acceso público
* @ desde 1.0
* @return void
* /
función rc_ban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// Estado de actualización
if (! $ old_status) {
update_user_option ($ user_id, 'rc_banned', verdadero, falso);
}
}

Paso 4: Deshabilitar usuarios

La siguiente función es la opuesta a la que acabamos de crear: tenemos que dar la capacidad de "prohibir" a los usuarios:

/ **
* Deshabilitar usuario
* *
* @acceso público
* @ desde 1.0
* @return void
* /
función rc_unban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// Estado de actualización
if ($ old_status) {
update_user_option ($ user_id, 'rc_banned', false, false);
}
}

Paso 5: ¿Está prohibido el usuario??

Vimos en rc_ban_users () y rc_unban_users () que usamos una función llamada rc_is_user_banned () para verificar si un usuario está prohibido o no. Vamos a crearlo:

/ **
* Comprueba si un usuario ya está prohibido
* *
* @acceso público
* @ desde 1.0
* @return void
* /
función rc_is_user_banned ($ user_id) {
return get_user_option ('rc_banned', $ user_id, false);
}

Básicamente, esta función simplemente devuelve el valor de la opción guardada en rc_ban_users ().

En este momento tenemos una nueva casilla de verificación en la página de edición de usuario que debería gustar así:

ban_users_1

El último paso es conectar una función al formulario de inicio de sesión para evitar que los usuarios prohibidos inicien sesión.

Paso 5: Evite que los usuarios prohibidos inicien sesión

Para hacerlo, necesitamos usar un filtro predeterminado de WordPress llamado "wp_authenticate_user". A este filtro conectaremos una función llamada "rc_authenticate_user ()". Esta función usará el Clase WP_Error.

/ **
* Compruebe si el usuario está bloqueado durante el proceso de inicio de sesión
* *
* @acceso público
* @ desde 1.0
* @return void
* /
función rc_authenticate_user ($ usuario) {

if (is_wp_error ($ usuario)) {
return $ usuario;
}

// Devolver error si la cuenta de usuario está prohibida
$ banned = get_user_option ('rc_banned', $ user-> ID, false);
if ($ prohibido) {
return new WP_Error ('rc_banned', __ ('ERROR: Esta cuenta de usuario está deshabilitada. ',' Rc '));
}

return $ usuario;
}

Ahora, solo necesitamos agregar el filtro:

add_filter ('wp_authenticate_user', 'rc_authenticate_user', 1);

Conclusión

Creamos un complemento que agrega una casilla de verificación a la página de edición del perfil de usuario. Utilizamos una segunda función para almacenar el valor en la casilla de verificación y creamos una función para prohibir a un usuario de WordPress y otra para desbloquear a un usuario. También creamos una pequeña función para verificar si un usuario está prohibido o no. Y finalmente conectamos una función al filtro "wp_authenticate_user" usando la clase predeterminada WP_Error WordPress.

Si te gustó este tutorial, te encantará la versión premium de este complemento: Administrador de acceso de usuarios.

Descargar el código completo en Github

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map