WordPress Hosting

borrar perfiles usuarios wordpress

Cómo borrar perfiles o roles de usuario en WordPress que ya no necesitas

¿Has desinstalado plugins de tu WordPress y te has dado cuenta de que siguen apareciendo perfiles o roles de usuario – como sea que los llames – que ya no utilizas? Es más común de lo que piensas.

Por qué se acumulan perfiles innecesarios

Los plugins que añaden funcionalidades complejas a WordPress suelen crear perfiles de usuario personalizados para gestionar permisos específicos necesarios para su uso, y hasta ahí bien.

El problema es que muchos de estos plugins no eliminan automáticamente estos roles cuando los desinstalas y estos perfiles se quedan ahí campando a sus anchas en tu base de datos.

Algunos de los culpables más habituales son:

Plugins de eCommerce:

  • WooCommerce crea perfiles como shop_manager (gestor de tienda) y customer (cliente).
  • Easy Digital Downloads añade sus propios perfiles de gestión.

Plugins LMS (plataformas de aprendizaje):

  • LearnDash genera perfiles como group_leader (líder de grupo).
  • SenseiLMS crea instructor, student y otros perfiles específicos.

Plugins de membresías:

  • MemberPress y Paid Memberships Pro crean perfiles personalizados para cada nivel de membresía.
  • Restrict Content Pro genera sus propios perfiles de suscriptor.

Otros plugins especializados:

  • Algunos plugins SEO (casi todos) crean perfiles de seo_manager y similares.
  • Plugins de directorios, reservas, eventos… cada uno con sus perfiles propios

Cuándo tiene sentido eliminar perfiles

Antes de lanzarte a borrar perfiles, piensa si realmente necesitas hacerlo:

Deberías eliminarlos cuando:

  • Has desinstalado definitivamente un plugin y no vas a volver a usarlo.
  • Quieres optimizar tu base de datos y reducir el desorden.
  • Necesitas claridad en la gestión de usuarios de tu WordPress.
  • Estás haciendo limpieza general de tu instalación.

Mejor déjalos si:

  • Piensas volver a usar ese plugin en el futuro.
  • Tienes usuarios asignados a esos perfiles (primero reasígnalos).
  • No estás seguro de qué plugin creó ese perfil.

Advertencia importante antes de empezar

Antes de eliminar cualquier perfil, asegúrate de que ningún usuario está asignado a él. Si borras un perfil con usuarios asignados, pueden perder el acceso a tu WordPress o quedarse sin permisos.

Para comprobar usuarios por perfil:

  1. Ve a «Usuarios > Todos los usuarios».
  2. Filtra por el perfil que quieres eliminar.
  3. Si hay usuarios, reasígnalos a otro perfil apropiado antes de continuar.

Ahora sí, vamos con las soluciones.

Método 1: Plugin «User Role Editor» (el más completo)

User Role Editor es el plugin más popular para gestionar perfiles y capacidades en WordPress. Además de eliminar perfiles, te permite editarlos y crear nuevos.

Pasos:

  1. Instala y activa el plugin «User Role Editor» desde el repositorio oficial o el instalador de WordPress.
  2. Ve a Usuarios > User Role Editor.
  3. Haz clic en el botón Eliminar perfil a la derecha de la pantalla.
  4. En el desplegable de la ventana emergente, selecciona el perfil que quieres eliminar.
  5. Pulsa el botón de eliminar para confirmar la acción.

user role editor eliminar perfil

Ventajas:

  • Interfaz visual clara.
  • Muy completo, también sirve para editar y crear perfiles y capacidades.
  • Mantenido activamente y compatible con las últimas versiones de WordPress.

Inconvenientes:

  • Quizá demasiado completo si solo quieres borrar perfiles puntualmente.

Método 2: Plugin «Eliminador sencillo de perfiles» (el más ligero y directo)

Si buscas algo más específico y ligero, he creado un plugin sencillo de usar y tirar especialmente para esta tarea.

Características:

  • Un solo archivo PHP.
  • Muestra solo los perfiles personalizados (protege los nativos de WordPress).
  • Incluye botón para desactivarse a sí mismo cuando termines.
  • Sin configuraciones complicadas.

Cómo usarlo:

  1. Descarga en este enlace el plugin Eliminador sencillo de perfiles.
  2. Instala el plugin como cualquier otro, con la opción de subir del instalador de plugins de WordPress.
  3. Actívalo.
  4. Ve a Usuarios > Eliminar perfiles.
  5. Elimina los perfiles que no necesites.
  6. Desactiva el plugin con el botón de la misma página.
  7. Si ya no lo necesitas puedes borrar el plugin hasta la próxima.

eliminar perfiles usuario wordpress

Perfecto para limpiezas puntuales sin complicarte la vida.

Método 3: Snippet de código (para desarrolladores)

Si te manejas con código, puedes añadir este snippet al functions.php de tu tema hijo o usando un plugin de snippets, lo que prefieras:

/* Eliminación de roles de usuario innecesarios - AyudaWP.com */
function eliminar_roles_personalizados() {
    // Solo ejecutar una vez
    if (get_option('roles_eliminados')) {
        return;
    }
    
    $roles_a_eliminar = array(
        'shop_manager',
        'instructor',
        'customer',
        'seo_manager',
        // Añade o quita roles siguiendo la pauta
    );
    
    foreach ($roles_a_eliminar as $rol) {
        if (get_role($rol)) {
            remove_role($rol);
        }
    }
    
    // No se sigue ejecutando
    update_option('roles_eliminados', true);
}
add_action('init', 'eliminar_roles_personalizados');

Este código se ejecuta una sola vez automáticamente. Después puedes dejarlo o eliminarlo, ya habrá hecho su trabajo.

Método 4 (avanzado): Eliminación directa en la base de datos

Para usuarios avanzados o desarrolladores que quieran entender cómo funciona WordPress por debajo, aquí van los métodos más técnicos.

¿Dónde se almacenan los perfiles de usuario de WordPress?

Los perfiles de usuario en WordPress se guardan en la tabla wp_options (puede tener otro prefijo según tu instalación), concretamente en una opción llamada wp_user_roles. El valor está serializado en formato PHP.

¿En serio?, ¿con lo fácil que es con los otros métodos quieres animarte a romper algo?. A mandar, por mi no quedará, y eso sí, aprenderás algo seguro.

Borrar perfiles manualmente desde phpMyAdmin

Pasos:

  1. Accede a phpMyAdmin desde tu hosting.
  2. Selecciona tu base de datos de WordPress.
  3. Busca la tabla wp_options.
  4. Localiza la fila con option_name = wp_user_roles.
  5. Edita el campo option_value (está serializado), que tendrá este aspecto:
    a:6:{s:13:"administrator";a:2:{s:4:"name";s:13:"Administrator";s:12:"capabilities";a:61:{...}}s:6:"editor";a:2:{...}s:13:"shop_manager";a:2:{...}}
  6. Elimina todo el bloque correspondiente a ese rol (desde s:X:"nombre_rol" hasta su cierre).
  7. Importante: Ajusta el número al inicio del array (el a:6: indica que hay 6 roles; si borras uno, debe quedar a:5:)

Advertencia: Un error en el formato serializado puede romper tu WordPress. Haz antes copia de seguridad sí o sí.

Borrar perfiles con comandos SQL en phpMyAdmin

Puedes ejecutar consultas SQL, pero requiere deserializar y serializar de nuevo los datos. Francamente, no lo recomiendo porque es más propenso a errores que los métodos anteriores.

Pero, si aún prefieres usar SQL directamente, puedes ejecutar este comando que deserializa, elimina el perfil y vuelve a serializar automáticamente usando las funciones de PHP integradas en MySQL:

UPDATE wp_options 
SET option_value = (
SELECT CONCAT(
'a:', 
CAST((LENGTH(option_value) - LENGTH(REPLACE(option_value, 's:13:"shop_manager"', ''))) / LENGTH('s:13:"shop_manager"') - 1 AS CHAR),
':',
REPLACE(
SUBSTRING(option_value, 3),
CONCAT('s:13:"shop_manager";a:2:{s:4:"name";s:13:"Shop manager";s:12:"capabilities";', 
SUBSTRING_INDEX(SUBSTRING_INDEX(option_value, 's:13:"shop_manager"', -1), '}}', 1),
'}}'),
''
)
)
)
WHERE option_name = 'wp_user_roles';

Ojo: Este ejemplo es complejo y específico para borrar el rol shop_manager. La realidad es que manipular datos serializados con SQL es muy propenso a errores.

Borrar perfiles con comandos SQL en con una función PHP

Una mejor alternativa sin dejar de usar SQL es usar un script PHP temporal que haga el trabajo correctamente:

<?php
// Conectar a la base de datos
require_once('wp-load.php');

// Obtener perfiles actuales - cambia el prefijo wp_ al tuyo
$roles = get_option('wp_user_roles');

// Eliminar el perfil que quieras (ejemplo: shop_manager)- cambia el prefijo wp_ al tuyo
if (isset($roles['shop_manager'])) {
unset($roles['shop_manager']);
update_option('wp_user_roles', $roles);
echo "Perfil eliminado correctamente";
} else {
echo "El perfil no existe";
}
?>
Crea un archivo con el nombre que quieras (p.ej.: borrar-rol.php) y súbelo a la carpeta raíz de tu WordPress, ejecútalo una vez accediendo a tudominio.com/borrar-rol.php desde el navegador, y elimínalo inmediatamente después.

Si necesitas automatizar el proceso o hacerlo programáticamente:

// Obtener todos los perfiles
global $wp_roles;
$all_roles = $wp_roles->get_names();

// Eliminar un perfil específico
remove_role('nombre_del_rol');

// Verificar si un rol existe antes de eliminarlo
if (get_role('nombre_del_rol')) {
    remove_role('nombre_del_rol');
}

Esto es útil si estás desarrollando un plugin o tema personalizado y necesitas gestionar perfiles programáticamente.

Tabla resumen: ¿qué método elegir?

Método Dificultad Cuándo usarlo Ventajas Inconvenientes
User Role Editor Fácil Necesitas gestionar perfiles frecuentemente Interfaz visual, muy completo, mantenido activamente Plugin más pesado de lo necesario para eliminar perfiles puntuales
Eliminador sencillo de perfiles Fácil Limpieza puntual rápida Muy ligero, específico para esta tarea, se puede desactivar después Solo sirve para borrar perfiles
Snippet de código Media Sabes programar y quieres control total No requiere plugin, ejecución automática Necesitas editar archivos del tema o métodos alternativos
Base de datos Difícil Solo si eres desarrollador experimentado Entiendes cómo funciona WordPress internamente Riesgo alto de romper algo si te equivocas

Conclusión y consejos importantes

Hacer limpia de perfiles innecesarios en WordPress es una buena práctica de mantenimiento y seguridad, especialmente si has probado muchos plugins a lo largo del tiempo. Para la mayoría de usuarios, el plugin User Role Editor o el plugin Eliminador sencillo de perfiles son las opciones más seguras y directas.

Si eres desarrollador, el snippet de código te dará más control y te permitirá automatizar el proceso. Los métodos de base de datos déjalos solo para cuando realmente sepas lo que estás haciendo.

En cualquier caso, recuerda siempre hacer copia de seguridad antes de eliminar perfiles, especialmente si tienes usuarios activos en tu WordPress. Más vale prevenir que tener que restaurar toda la base de datos porque se te fue la mano borrando cosas.

¿Has acumulado perfiles de plugins antiguos en tu WordPress? Cuéntame en los comentarios qué método te ha funcionado mejor.

Compartir en redes
Resumir con IA

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en las estrellas para valorarlo!

Promedio de puntuación 5 / 5. Total de votos: 2

¡Todavía no hay votos! Sé el primero en valorar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en las redes sociales!

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!



Sobre el autor

2 comentarios en “Cómo borrar perfiles o roles de usuario en WordPress que ya no necesitas”

  1. Francisco Vivo

    Hola Fernando,
    Gracias por este artículo. Aplicando este consejo me he dado cuenta que en una web no aparecía el rol de «cliente». Al parecer es un caso muy concreto y común: WooCommerce tiene su propio registro de clientes (en WooCommerce → Clientes) pero en WordPress no se ha asignado el rol customer a los usuarios del sistema, de modo que en Usuarios → Todos los usuarios aparecen “sin rol en este sitio”.
    Se puede corregir con un Snippet (correcto y seguro):
    /**
    * VT – Asignar rol Customer a usuarios con pedidos
    * Corrige usuarios "sin rol" que sí constan como clientes en WooCommerce.
    */
    add_action('admin_init', function () {
    if ( ! current_user_can('manage_options') ) {
    return; // Solo admins
    }
    // Evita ejecuciones repetidas si recargas varias veces
    if ( get_transient('vt_fix_missing_customer_roles_ran') ) {
    return;
    }

    global $wpdb;
    $blog_prefix = $wpdb->get_blog_prefix( get_current_blog_id() );

    // Usuarios sin rol en este sitio: metadato capabilities vacío o inexistente
    $users = get_users([
    'number' => 5000, // Ajusta si necesitas más
    'fields' => ['ID'],
    'meta_query' => [
    'relation' => 'OR',
    [
    'key' => $blog_prefix . 'capabilities',
    'compare' => 'NOT EXISTS',
    ],
    [
    'key' => $blog_prefix . 'capabilities',
    'value' => 'a:0:{}', // array vacío serializado
    'compare' => '=',
    ],
    ],
    ]);

    foreach ($users as $u) {
    $user_id = is_object($u) ? $u->ID : $u;

    // Solo si realmente es cliente con pedidos
    if ( function_exists('wc_get_customer_order_count') && wc_get_customer_order_count($user_id) > 0 ) {
    $wp_user = new WP_User($user_id);

    // Asegura que sigue sin rol antes de asignar
    if ( empty($wp_user->roles) ) {
    $wp_user->set_role('customer');
    }
    }
    }

    // Marca ejecución (10 min). Tras verificar, desactiva/elimina el snippet.
    set_transient('vt_fix_missing_customer_roles_ran', 1, 10 * MINUTE_IN_SECONDS);
    });

    Se puede ajustar además, para que asigne customer a usuarios sin pedidos pero con cuenta creada desde “Mi cuenta”, que también ha sido mi caso y si alguien lo desea, le paso el Snippet. (También se puede crear con IA que es lo que he hecho yo)

Los comentarios están cerrados.

Scroll al inicio