Hola,
Gracias por la respuesta, quería comentar que instalé el plugin indicado y vi que soportaba validaciones propias con las que validar el DNI.
La documentación está aquí:
https://docs.ultimatemember.com/article/94-apply-custom-validation-to-a-field
De todas formas para ir al grano diré lo que hice en el plugin:
-Editar el formulario por defecto de registro
-Añadir un campo DNI personalizado con lo siguiente:
Validar: Validación personalizada
Acción personalizada: Ponemos por ejemplo: dni
(Esto llamará a un hook llamado um_custom_field_validation_dni creado por código)
Seguidamente nos dirigimos a la carpeta wp-content/themes/<tema usado> y editamos el fichero functions.php, y al final del archivo añadimos lo siguiente:
/**
* Validar campo DNI
* @param string $key
* @param attay $array
* @param array $args
*/
function um_custom_validate_dni($key, $array, $args){
$letra = substr($args[$key], -1);
$numeros = substr($args[$key], 0, -1);
if ( isset( $args[$key]) && substr("TRWAGMYFPDXBNJZSQVHLCKE", $numeros%23, 1) == $letra && strlen($letra) == 1 && strlen ($numeros) == 8 ){
//UM()->form()->add_error( $key, __( 'DNI VALIDO.', 'ultimate-member' ) );
}else{
UM()->form()->add_error( $key, __( 'DNI INCORRECTO, utilice formato: Ocho números y letra mayúscula.', 'ultimate-member' ) );
}
}
add_action( 'um_custom_field_validation_dni', 'um_custom_validate_dni', 30, 3 );
Con esto, cuando insertemos un nuevo usuario, si el DNI no es válido no dejará registrar al usuario e informará de ello. He dejado el comentario si queréis hacer pruebas. Básicamente, si llama a add_error, muestra el error y no deja validar el formulario. Si no hay nada (o está comentado), continúa.
Un saludo