Pulsa ESC para cerrar

Curso WordpressCurso Wordpress

Roles y capacidades que dejaron plugins desinstalados: cómo encontrarlos y limpiarlos

WordPress trae cinco roles de fábrica: Administrador, Editor, Autor, Colaborador y Suscriptor, cada uno con un conjunto de capacidades (permisos como edit_posts, publish_posts o manage_options).

Muchos plugins agregan los suyos: WooCommerce crea Gestor de la tienda y Cliente; los plugins de SEO, de formularios, de membresías o de cursos crean roles y capacidades propias. El problema es que, al desinstalarlos, muchos no los borran. Con los años, la base de datos acumula restos.

¿Por qué importa?

  • Seguridad: una capacidad poderosa (como edit_users o manage_options) asignada a un rol personalizado olvidado puede dar a alguien más acceso del que crees.
  • Confusión: la lista de roles al crear un usuario muestra opciones que ya no existen en la práctica.
  • Errores: algunos plugins nuevos fallan si encuentran un rol con su mismo nombre de otra instalación anterior.

Paso 1: ver qué hay

Con WP-CLI:

wp role list

Muestra el nombre y el identificador de cada rol. Para ver las capacidades de uno:

wp cap list administrator
wp cap list editor

Y para saber cuántos usuarios tiene cada rol:

wp user list --role=nombre_del_rol --format=count

Paso 2: detectar los restos

Busca en la lista:

  • Roles de plugins que ya no tienes instalados. El identificador suele delatar al plugin (wpseo_manager, tutor_instructor, wpforms_manager…).
  • Capacidades raras en los roles de WordPress, sobre todo en Administrador y Editor. Por ejemplo, manage_woocommerce en un sitio que ya no tiene WooCommerce, o capacidades con prefijos de plugins antiguos.

Antes de borrar algo, búscalo en tus plugins activos: si alguno usa esa capacidad, quitarla rompería una función. grep -r "nombre_capacidad" wp-content/plugins wp-content/themes te dice si alguien la usa.

Paso 3: limpiar

Haz un respaldo de la base de datos antes (wp db export). Los roles y capacidades se guardan en una sola opción (wp_user_roles) y un error puede dejar a usuarios sin permisos.

Quitar capacidades sobrantes de un rol

wp cap remove editor manage_woocommerce view_woocommerce_reports

Borrar un rol completo

Primero, mueve a sus usuarios a otro rol, o se quedarán sin rol (sin acceso a nada):

wp user list --role=rol_viejo --field=ID | xargs -I % wp user set-role % subscriber
wp role delete rol_viejo

Restaurar un rol de WordPress a su estado original

Si un rol de fábrica quedó lleno de capacidades extrañas, WP-CLI puede devolverlo a como viene en WordPress:

wp role reset editor

No uses wp role reset --all en un sitio con WooCommerce u otros plugins activos: borraría también las capacidades que ellos agregaron a los roles de fábrica (por ejemplo, las que WooCommerce da al Administrador para gestionar la tienda). Si lo hiciste por error, desactiva y vuelve a activar esos plugins para que las recreen.

Paso 4: comprobar

  1. Entra con un usuario de cada rol que tocaste (o usa un plugin para cambiar de usuario temporalmente) y revisa que pueda hacer lo que debe.
  2. Revisa que tu propio usuario administrador siga viendo todos los menús.

Si programas plugins: limpia lo tuyo

Si tu plugin crea roles o capacidades, bórralos al desinstalar (no al desactivar), en el archivo uninstall.php:

<?php
defined( 'WP_UNINSTALL_PLUGIN' ) || exit;

remove_role( 'cwp_instructor' );
foreach ( array( 'administrator', 'editor' ) as $rol ) {
	$objeto = get_role( $rol );
	if ( $objeto ) {
		$objeto->remove_cap( 'cwp_gestionar_cursos' );
	}
}

¿Encontraste roles que no sabes de dónde salieron? Comparte su identificador en el foro y averiguamos de qué plugin son.