
Para entrar a tu WordPress, un atacante necesita dos cosas: un nombre de usuario y una contraseña. Lo que mucha gente no sabe es que la primera mitad suele estar a la vista. WordPress, por diseño, deja ver los nombres de usuario en varios lugares, y los robots que intentan entrar por fuerza bruta empiezan siempre por ahí.
Esconderlos no reemplaza una buena contraseña ni el doble factor, pero es una capa más que cuesta muy poco poner.
Los cinco caminos
- Los archivos de autor. Si visitas
tudominio.cl/?author=1, WordPress te redirige a/author/nombre-de-usuario/. Cambiando el número se recorren todos los usuarios. - La API REST. La dirección
tudominio.cl/wp-json/wp/v2/userslista a todos los que han publicado algo, con suslug, que casi siempre coincide con el nombre de usuario. - El mapa del sitio. El mapa nativo incluye
wp-sitemap-users-1.xmlcon las URLs de cada autor. - Los mensajes de error del login. Si escribes un usuario que no existe, WordPress te lo dice. Si existe, te dice que la contraseña es incorrecta. Eso confirma qué usuarios son reales.
- El nombre visible. Si en «Mostrar este nombre públicamente» tienes elegido tu nombre de usuario, aparece en cada entrada.
Compruébalo tú
Desde una terminal:
# 1. Archivos de autor: mira la línea "location"
curl -sI "https://tudominio.cl/?author=1" | grep -i location
# 2. API REST: busca "slug"
curl -s "https://tudominio.cl/wp-json/wp/v2/users" | grep -o '"slug":"[^"]*"'
# 3. Mapa del sitio de usuarios
curl -sI "https://tudominio.cl/wp-sitemap-users-1.xml" | head -n 1
Si alguno muestra tu nombre de usuario real, está expuesto.
La solución: un mu-plugin que cierra los cinco
Guárdalo como wp-content/mu-plugins/cwp-usuarios-ocultos.php:
<?php
/**
* Plugin Name: Usuarios ocultos (Curso WordPress)
* Description: Impide que visitantes anónimos descubran los nombres de usuario.
*/
// 1. ?author=N: sin redirección a la URL del autor.
add_action( 'template_redirect', function () {
if ( is_user_logged_in() ) {
return;
}
if ( isset( $_GET['author'] ) ) {
wp_safe_redirect( home_url( '/' ), 301 );
exit;
}
}, 1 );
// 2. API REST: la lista de usuarios solo para usuarios conectados.
add_filter( 'rest_endpoints', function ( $rutas ) {
if ( is_user_logged_in() ) {
return $rutas;
}
unset( $rutas['/wp/v2/users'], $rutas['/wp/v2/users/(?P<id>[\d]+)'] );
return $rutas;
} );
// 3. Mapa del sitio: sin la sección de usuarios.
add_filter( 'wp_sitemaps_add_provider', function ( $proveedor, $nombre ) {
return 'users' === $nombre ? false : $proveedor;
}, 10, 2 );
// 4. Login: el mismo mensaje para usuario inexistente y contraseña incorrecta.
add_filter( 'login_errors', function ( $error ) {
global $errors;
$codigos = is_wp_error( $errors ) ? $errors->get_error_codes() : array();
$delatores = array( 'invalid_username', 'invalid_email', 'incorrect_password' );
if ( array_intersect( $codigos, $delatores ) ) {
return '<strong>Error:</strong> los datos de acceso no son correctos.';
}
return $error;
} );
¿Y el editor? El editor de bloques usa la API de usuarios para elegir el autor de una entrada, pero quien edita siempre está conectado, así que sigue funcionando. Lo mismo pasa con la pantalla de Usuarios.
Si tu tema muestra páginas de autor (por ejemplo, una revista con varios redactores), el punto 1 no las rompe: solo bloquea el truco del número. Las direcciones /author/nombre/ siguen funcionando. Si quieres que esas direcciones no revelen el usuario, cambia su «slug» de autor con un plugin o con WP-CLI: wp user update 1 --user_nicename=redaccion.
El punto 5 se arregla sin código
En Usuarios → Perfil, completa el campo Alias (nickname) con un nombre distinto a tu usuario y elígelo en Mostrar este nombre públicamente. Repite con cada usuario que publique.
Lo que de verdad te protege
Ocultar los usuarios hace la vida más difícil a los robots, pero un atacante decidido puede encontrar otros caminos. La protección real es la combinación de siempre:
- Contraseñas largas y únicas (un gestor de contraseñas lo hace fácil).
- Doble factor (2FA) en todos los administradores.
- Limitar los intentos de acceso, en WordPress o, mejor, en el servidor o en Cloudflare.
- Un nombre de usuario que no sea
admin, ni tu dominio, ni tu nombre.
¿Alguno de los tres comandos sigue mostrando tu usuario después de instalar el mu-plugin? Cuéntanos en el foro cuál, y vemos qué plugin lo está exponiendo.





