Apply custom validation to a field

There are several ways to validate a field value:

  1. Select a predefined validation option in the field setting "Validate".
  2. Select the "Custom Validation" option in the "Validate" setting, then type a keyword for the custom validation hook in the "Custom Action" setting. Attach your custom validation function to the hook um_custom_field_validation_{custom_action}, where {custom_action} is a keyword in the "Custom Action" setting.
  3. Attach your custom validation function to the hook um_submit_form_errors_hook_.

Note: You can add your custom PHP code to the functions.php file in the active theme directory.

Validation options

A list of predefined validation rules:

  • Alphabetic value only
  • Alpha-numeric value
  • English letters only
  • Facebook URL
  • Google+ URL
  • Instagram URL
  • LinkedIn URL
  • VKontakte URL
  • Lowercase only
  • Numeric value only
  • Phone Number
  • Skype ID
  • SoundCloud Profile
  • Twitter URL
  • E-mail( Not Unique )
  • Unique E-mail
  • Unique Metakey value
  • Unique Username
  • Unique Username/E-mail
  • Website URL
  • YouTube Profile
  • Telegram URL
  • Discord ID
  • Custom Validation*

Image - Field settings, predefined validation options.

Custom Validation option

You can select the "Custom Validation" option in the "Validate" setting and add your custom validation function to the functions.php file in the active theme directory. Use the um_custom_field_validation_{custom_action} hook to attach your custom validation function.

Image - Field settings.

Code example - Custom validation function attached to the custom action hook.

function um_custom_validate_mobile_number( $key, $array, $args ) {
	if ( isset( $args[$key] ) && !preg_match('/^[6-9]\d{9}$/', $args[$key]) ) {
		UM()->form()->add_error( $key, __( 'Please enter valid Mobile Number.', 'ultimate-member' ) );
	}
}
add_action( 'um_custom_field_validation_mobile_number', 'um_custom_validate_mobile_number', 30, 3 );

Image - Error message in the form.

Hook um_submit_form_errors_hook_

You can use the um_submit_form_errors_hook_ hook to apply custom validations and rules for any fields and stop forms from being submitted until the conditions are met.

In the example below we check that the username field does not have the word "admin".

Code example - Custom validation function attached to the hook.

function um_custom_validate_username( $args ) {	
	if ( isset( $args['user_login'] ) && strstr( $args['user_login'], 'admin' ) ) {
		UM()->form()->add_error( 'user_login', 'Your username must not contain the word admin.' );
	}
}
add_action('um_submit_form_errors_hook_','um_custom_validate_username', 999, 1);

Custom Validating with two fields

Examples below will help you validate and compare two fields. We use "user_login" & "nickname" as examples. The user will get an error message if the values in both fields are the same.

Example with the Custom Validation option

Image - Field settings.

Code example - Custom validation function attached to the custom action hook.

function um_custom_validate_username_nickname( $key, $array, $args ) {
	if ( isset( $args[$key] ) && isset( $args['user_login'] ) && $args[$key] == $args['user_login'] ) {
		UM()->form()->add_error( $key, __( 'Your username and nickname can not be equal.', 'ultimate-member' ) );
	}
}
add_action( 'um_custom_field_validation_username_nickname', 'um_custom_validate_username_nickname', 30, 3 );

Image - Error message in the form.

Example with the hook um_submit_form_errors_hook_

Code example - Custom validation function attached to the hook.

function um_custom_validate_username_nickname( $args ) {
	if ( isset( $args['user_login'] ) && isset( $args['nickname'] ) && $args['user_login'] == $args['nickname'] ) {
		UM()->form()->add_error( 'user_login', 'Your username and nickname can not be equal.' );
	}
}
add_action('um_submit_form_errors_hook_', 'um_custom_validate_username_nickname', 999, 1);

Image - Error message in the form.