Cómo deshabilitar un usuario de WordPress

Esta entrada me da ganas de crear un sistema que prohíba la instalación de una aplicación de WordPress. Como creas una simple adición y quieres compartir con los guardados conceptos que son complementarios. Este tutorial, cubrimos los filtros de WordPress, las promociones, la administración de columnas de usuarios y algunas otras cosas interesantes.

Paso 1: Crea el complemento

Una vez más, aquí muy complicado, todo lo que tienes que es crear una nueva carpeta con “wp-content / plugins” llamada “ban-users”. En este caso, cree un nuevo archivo archivado «ban-users.php», lea y descargue 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 metaopción de usuario que indicará que el usuario ya no puede iniciar sesión en su sitio web.

Aquí está el código:

/**
 * Admin init
 *
 * @access      public
 * @since       1.0 
 * @return      void
*/
function rc_admin_init(){
    
	// Edit user profile
	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 simple código está creando una llamada a una función que tenemos que crear ahora. Esta función agrega un cuadro de verificación en la página de perfil del usuario.

/**
 * Adds custom checkbox to user edition page
 *
 * @access      public
 * @since       1.0 
 * @return      void
*/
function rc_edit_user_profile() {
	if ( !current_user_can( 'edit_users' ) ) {
		return;
	}
	
	global $user_id;
	
	// User cannot disable itself
	$current_user = wp_get_current_user();
	$current_user_id = $current_user->ID;
	if ( $current_user_id == $user_id ) {
		return;
	}

	// Check if enabled
	$checked = checked( get_user_option( 'rc_banned', $user_id, false ) );

	// Display checkbox
	echo '

‘; }

Ahora necesitamos tener la función de custodiar la base de datos de la caja de verificación:

/**
 * Save custom checkbox
 *
 * @access      public
 * @since       1.0 
 * @return      void
*/
function rc_edit_user_profile_update() {
			
	if ( !current_user_can( 'edit_users' ) ) {
		return;
	}
	
	global $user_id;
	
	// User cannot disable itself
	$current_user    = wp_get_current_user();
	$current_user_id = $current_user->ID;
	if ( $current_user_id == $user_id ) {
		return;
	}
	
	// Lock
	if( isset( $_POST['rc_ban'] ) && $_POST['rc_ban'] = 'on' ) {
		rc_ban_user( $user_id );
	} else { // Unlock
		rc_unban_user( $user_id );
	}
	
}

Como puede ver, esta nueva característica es una de las siguientes funciones: rc_ban_users () y rc_unban_users (). Sus nombres son en su mayoría explícitos, el primer ejemplo está en la base de datos de lo que solía ser un baneado, el segundo para desbloquear a los usuarios.

Pasaporte 3: Úsanos

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

/**
 * Ban user
 *
 * @access      public
 * @since       1.0 
 * @return      void
*/
function rc_ban_user( $user_id ) {
	
	$old_status = rc_is_user_banned( $user_id );
	
	// Update status
	if ( !$old_status ) {
		update_user_option( $user_id, 'rc_banned', true, false );
	}
}

Paso 4: Anular la prohibición de uso

La siguiente función es la tarea de crear lo siguiente: tenemos que dar la posibilidad de «descenso» a los usuarios:

/**
 * Un-ban user
 *
 * @access      public
 * @since       1.0 
 * @return      void
*/
function rc_unban_user( $user_id ) {

	$old_status = rc_is_user_banned( $user_id );
	
	// Update status
	if ( $old_status ) {
		update_user_option( $user_id, 'rc_banned', false, false );
	}
}

Paso 5: ¿Está prohibido usarlo?

Vimos en rc_ban_users() y rc_unban_users() que usamos una función llamada rc_is_user_banned() za provera na si un usuario está ¡zabranno za ne. Vamos a crear:

/**
 * Checks if a user is already banned
 *
 * @access      public
 * @since       1.0 
 * @return      void
*/
function rc_is_user_banned( $user_id ) {
	return get_user_option( 'rc_banned', $user_id, false );
}

Por cierto, esta función simplemente devalúa el valor de la opción guardada en rc_ban_users().

En este momento, contamos con una nueva casilla de verificación en el historial de uso del idioma que te permite elegir:

prohibir_usuarios_1

El último paso es conectarse a un formulario de inicio de sesión para evitar cualquier inicio de sesión prohibido.

Paso 5: Evite que los usuarios prohibidos sesión de iniciación

Debe usar un filtro de WordPress predefinido con «wp_authenticate_user». Este filtro está incluido en la función “rc_authenticate_user()â€. Esta es la función láser WP_Error.

/**
 * Check if user is locked while login process
 *
 * @access      public
 * @since       1.0 
 * @return      void
*/
function rc_authenticate_user( $user ) {

	if ( is_wp_error( $user ) ) {
		return $user;
	}
	
	// Return error if user account is banned
	$banned = get_user_option( 'rc_banned', $user->ID, false );
	if ( $banned ) {
		return new WP_Error( 'rc_banned', __('ERROR: This user account is disabled.', 'rc') );
	}
	
	return $user;
}

Ahora, solo necesitamos agregar el filtro:

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

Cremas un complemento que agrega una casilla de verificación a la página de edición del perfil de usuario. Solo tenemos una segunda función para mejorar el valor de la casilla de verificación y cremas una función para prohibir una aplicación de WordPress y otra para desbloquear perlas para verificar y verificar el uso de esta herramienta. La conexión final de la función «wp_authenticate_user» utiliza una clase WP_Error predefinida de WordPress.

Descargar el código completo en Github

Deja una respuesta

Tu dirección de correo electrónico no será publicada.