Durante semanas estuve recibiendo registros automáticos en mi sitio web. Cuentas falsas con correos de spam, nombres sin sentido y perfiles vacíos, todos con el rol de suscriptor. No activaban ninguna membresía, no hacían nada… pero seguían entrando, día tras día.
Probé muchas medidas, desde las más simples hasta otras más avanzadas. Nada funcionaba, al cabo de un rato los bots volvían a aparecer.
Hasta que di con la verdadera raíz del problema: los bots estaban entrando directamente por el endpoint de registro de WordPress, sin usar el formulario. Y una vez entendí eso, diseñé un sistema personalizado que por fin funcionó.
Este artículo recoge lo que probé, lo que no funcionó y el enfoque que sí me dio resultados. Si estás sufriendo el mismo problema, te puede ahorrar horas (o días) de frustración.

Lo que probé y no funcionó
Estas fueron algunas de las medidas que apliqué, sin éxito real:
- Activar reCAPTCHA v2 en el formulario de registro.
- Añadir verificación doble por email.
- Bloquear dominios sospechosos en el
functions.php. - Forzar retrasos con JavaScript para frenar bots rápidos.
- Añadir campos ocultos (honeypot) y lógicas condicionales.
- Configurar restricciones por IP.
- Usar plugins de seguridad como Wordfence (que ya estaba activo) para detectar posibles accesos o malware.
A pesar de todo eso, los registros seguían llegando. Cada día aparecían nuevos usuarios falsos.
La pista clave: ¿y si no están usando el formulario?
Revisando los perfiles creados, me di cuenta de que los bots no tenían estado de membresía, lo que indicaba que no estaban usando el flujo habitual de registro de Restrict Content Pro. Mientras que los usuarios reales que sí pasaban por el formulario aparecían con estado pending, si no finalizaban el pago. Los bots solo tenían el rol de suscriptor y ningún dato más.
Eso me hizo recordar algo importante: WordPress permite crear usuarios mediante peticiones POST al endpoint /wp-login.php?action=register, aunque el formulario del sitio esté protegido.
Y si el formulario está protegido pero el endpoint no… los bots simplemente lo esquivan.
La solución: validación personalizada y bloqueo del endpoint
Decidí aplicar un enfoque en dos niveles:
- Añadir un campo nonce al formulario de registro, de forma que solo se puedan crear usuarios si pasan por él.
- Validar ese nonce globalmente, incluso si el usuario ya ha sido creado, y eliminarlo si no es válido.
- Bloquear directamente el endpoint de registro nativo de WordPress, para cerrar cualquier otra vía de acceso automatizado.
El código que funcionó
Este es el fragmento que solucionó el problema. Lo puedes añadir en el archivo functions.php de tu tema hijo o usar el plugin Code Snippets para gestionarlo de forma más limpia:
🔐 Este contenido es solo para suscriptores premium.
¿Funciona solo con Restrict Content Pro?
El primer bloque de código (donde se añade el nonce al formulario) está pensado específicamente para Restrict Content Pro, ya que utiliza un hook específico del plugin.
Sin embargo, el resto del código (la validación global y el bloqueo del endpoint) funciona con cualquier sistema de registro de usuarios en WordPress. Si estás usando otro plugin (como Profile Builder, Ultimate Member, o formularios personalizados), solo tendrías que adaptar el hook que añade el nonce al formulario correspondiente.
Conclusión
No basta con proteger el formulario de registro si los bots pueden crear cuentas desde fuera de él. WordPress, por defecto, permite crear usuarios desde distintos puntos, y los bots lo saben.
Combinar protección en el formulario + validación global + cierre del endpoint nativo es lo que realmente me funcionó para frenar por completo los registros automáticos.
Desde que implementé esta solución, no he vuelto a recibir ni un solo registro falso.




¿Has sufrido también estos molestos registros? Deja tu experiencia y cómo lo solucionaste en los comentarios.