Basically, when you add a new term, WordPress will use term_exists() to validate term before add it to database.
-
term_exists()usessanitize_title()which usesremove_accents()andsanitize_title_with_dashes()to sanitize term. -
remove_accents()will converts all accent characters to ASCII characters andsanitize_title_with_dashes()will limits the output to alphanumeric characters, underscore (_) and dash (-), whitespaces will be converted to dashes, uppercase characters will be converted to lowercase characters. -
WordPress also doesn’t allow to create terms which have the same term slug at the same level of a taxonomy hierarchy.
So, every characters which don’t output the same term slug at the same level of a taxonomy hierarchy after passed through sanitize_title() function are allowed characters.