bp_xprofile_validate_nickname_value( $retval, $field_id, string $value, string $user_id = null )
Validate nickname approved characters and format.
Description
Parameters
- $retval
-
(Required)
- $field_name
-
(Required)
- $value
-
(Required)
- $user_id
-
(Optional)
Default value: null
Return
($retval)
Source
File: bp-xprofile/bp-xprofile-filters.php
function bp_xprofile_validate_nickname_value( $retval, $field_id, $value, $user_id = null ) { if ( $field_id != bp_xprofile_nickname_field_id() ) { return $retval; } if ( $retval ) { return $retval; } $value = strtolower( $value ); $field_name = xprofile_get_field( $field_id )->name; // Empty nickname if ( '' === trim( $value ) ) { return sprintf( __( '%s is required and not allowed to be empty.', 'buddyboss' ), $field_name ); } // only alpha numeric, underscore, dash if ( ! preg_match( '/^([A-Za-z0-9-_\.]+)$/', $value ) ) { return sprintf( __( 'Invalid %s. Only "a-z", "0-9", "-", "_" and "." are allowed.', 'buddyboss' ), $field_name ); } // cannot have 2 continued special characters if ( preg_match( '/([-_\.]{2})/', $value ) ) { return sprintf( __( '"-", "_" and "." cannot be repeated twice in %s.', 'buddyboss' ), $field_name ); } // must be shorter then 32 characters $nickname_length = apply_filters( 'xprofile_nickname_max_length', 32 ); if ( strlen( $value ) > $nickname_length ) { return sprintf( __( '%s must be shorter than %d characters.', 'buddyboss' ), $field_name, $nickname_length ); } global $wpdb; $where = [ 'meta_key = "nickname"', 'meta_value = "' . $value . '"' ]; if ( $user_id ) { $where[] = 'user_id != ' . $user_id; } $sql = sprintf( 'SELECT count(*) FROM %s WHERE %s', $wpdb->usermeta, implode( ' AND ', $where ) ); if ( $asdf = $wpdb->get_var( $sql ) > 0 ) { return sprintf( __( '%s has already been taken.', 'buddyboss' ), $field_name ); } return $retval; }
Changelog
Version | Description |
---|---|
BuddyBoss 1.0.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.